You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by Adrian Crum <ad...@sandglass-software.com> on 2014/01/02 01:39:10 UTC

Re: svn commit: r1554706 - /ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java

There is no need to synchronize on the <set> element model - it is 
thread-safe. The MethodContext instance is per-thread, so it doesn't 
need synchronization either.

Please take some time to understand the architecture before committing 
changes like this.

Adrian Crum
Sandglass Software
www.sandglass-software.com

On 1/1/2014 7:15 PM, jleroux@apache.org wrote:
> Author: jleroux
> Date: Thu Jan  2 00:15:38 2014
> New Revision: 1554706
>
> URL: http://svn.apache.org/r1554706
> Log:
> This is a temporary hack waiting for a better geolocation data model, related with OFBIZ-5453
>
> Modified:
>      ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java
>
> Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java?rev=1554706&r1=1554705&r2=1554706&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java (original)
> +++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java Thu Jan  2 00:15:38 2014
> @@ -144,10 +144,17 @@ public final class SetOperation extends
>                   Debug.logWarning(exc, "Error evaluating scriptlet [" + this.scriptlet + "]: " + exc, module);
>               }
>           } else if (!this.fromFma.isEmpty()) {
> +            Locale localeTemp = null; // FIXME this is a temporary hack waiting for a better geolocation data model, related with OFBIZ-5453
>               if (!this.localeFse.isEmpty() && this.type.length() > 0) {
> -                methodContext.setLocale(new Locale(this.localeFse.expandString(methodContext.getEnvMap())));
> +                localeTemp = methodContext.getLocale();
> +                synchronized (this) {
> +                    methodContext.setLocale(new Locale(this.localeFse.expandString(methodContext.getEnvMap())));
> +                    newValue = this.fromFma.get(methodContext.getEnvMap());
> +                    methodContext.setLocale(localeTemp);
> +                }
> +            } else {
> +                newValue = this.fromFma.get(methodContext.getEnvMap());
>               }
> -            newValue = this.fromFma.get(methodContext.getEnvMap());
>               if (Debug.verboseOn())
>                   Debug.logVerbose("In screen getting value for field from [" + this.fromFma.toString() + "]: " + newValue, module);
>           } else if (!this.valueFse.isEmpty()) {
>
>

Re: svn commit: r1554706 - /ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOpe ration.java

Posted by Jacques Le Roux <ja...@les7arts.com>.
To make it more clear, we don't use Freemarker to show something on a page but to send something to a map renderer system

Jacques

On Thursday, January 02, 2014 3:55 PM jacques.le.roux@les7arts.com wrote
> In this case we are no converting data, we want to transfer a Float from a point to another.
> We are using this  built-in http://freemarker.org/docs/ref_builtins_number.html#ref_builtin_c
> 
> Jacques
> 
> On Thursday, January 02, 2014 2:52 PM adrian.crum@sandglass-software.com wrote
>> You are not understanding the problem and I don't know how to make it
>> any simpler.
>> 
>> Mini-language and screen widgets both utilize the conversion framework
>> to convert data types. The conversion framework is thoroughly tested and
>> Float <--> String conversions work perfectly. If you are having a
>> problem, then it is somewhere else - NOT in Mini-language or screen widgets.
>> 
>> Adrian Crum
>> Sandglass Software
>> www.sandglass-software.com
>> 
>> On 1/2/2014 8:10 AM, Jacques Le Roux wrote:
>>> No, it's not the template. Actually as soon as you pass in SetField.runAction() (for widgets, similar for minilang) and have
>>> (for instance) fr as locale in your env, you are screwed: the decimals are lost. That's why I changed things there.
>>> 
>>> Moreover this issue does not appear for points which comes directly from the DB and use the same path to the geoLocation.ftl
>>> template but no set field
>>> For instance partymgr/control/PartyGeoLocation?partyId=DemoCustomer
>>> or facility/control/EditFacilityGeoPoint?facilityId=WebStoreWarehouse
>>> 
>>> Jacques
>>> 
>>> On Thursday, January 02, 2014 1:08 PM adrian.crum@sandglass-software.com wrote
>>>> That appears to be a problem in the template.
>>>> 
>>>> Adrian Crum
>>>> Sandglass Software
>>>> www.sandglass-software.com
>>>> 
>>>> On 1/2/2014 6:40 AM, Jacques Le Roux wrote:
>>>>> I'm not quite sure to follow you. For isntance, currently if you change
>>>>>    type="Float" locale="en"/>
>>>>> for
>>>>> />
>>>>> in
>>>>> <screen name="ExampleGeoLocationPointSet1">
>>>>> 
>>>>> You get an error in HtmlWidget.StringHtmlWrapperForFtl():
>>>>> freemarker.core.NonNumericalException: point.lon is not a number, it is
>>>>> org.ofbiz.widget.screen.HtmlWidget$StringHtmlWrapperForFtl
>>>>> 
>>>>> Jacques
>>>>> 
>>>>> On Thursday, January 02, 2014 12:23 PM adrian.crum@sandglass-software.com wrote
>>>>>> The String would be converted to a Float. What would be the issue?
>>>>>> 
>>>>>> Adrian Crum
>>>>>> Sandglass Software
>>>>>> www.sandglass-software.com
>>>>>> 
>>>>>> On 1/2/2014 6:12 AM, Jacques Le Roux wrote:
>>>>>>> Though Adrian,
>>>>>>> 
>>>>>>> There is something which makes me wonder.
>>>>>>> 
>>>>>>> Suppose we were not in the geolocation context, and we want to set a Float value like it's done in
>>>>>>> 
>>>>>>> <screen name="ExampleGeoLocationPointSet1">
>>>>>>> and
>>>>>>> <simple-method method-name="editGeoLocation" short-description="Edit GeoLocation">
>>>>>>> 
>>>>>>> And we have a floating-point DB field
>>>>>>> 
>>>>>>> Won't we get the same issue?
>>>>>>> 
>>>>>>> Jacques
>>>>>>> 
>>>>>>> 
>>>>>>> On Thursday, January 02, 2014 8:52 AM jacques.le.roux@les7arts.com wrote
>>>>>>>> It's just a temporary hack I hastily commited last night, so as I was unsure I preferred to be safe than sorry.
>>>>>>>> Good to know that MethodContext is thread safe.
>>>>>>>> 
>>>>>>>> I have still to check but your new data model proposition sounds to me at 1st glance.
>>>>>>>> 
>>>>>>>> Note that the current works well, even for i18n, as long as you only use a direct relation with data.
>>>>>>>> But if you use <set> to save your data in DB then the problem arises.. That's why I got this way...
>>>>>>>> 
>>>>>>>> Jacques
>>>>>>>> 
>>>>>>>> On Thursday, January 02, 2014 1:39 AM adrian.crum@sandglass-software.com wrote
>>>>>>>>> There is no need to synchronize on the <set> element model - it is
>>>>>>>>> thread-safe. The MethodContext instance is per-thread, so it doesn't
>>>>>>>>> need synchronization either.
>>>>>>>>> 
>>>>>>>>> Please take some time to understand the architecture before committing
>>>>>>>>> changes like this.
>>>>>>>>> 
>>>>>>>>> Adrian Crum
>>>>>>>>> Sandglass Software
>>>>>>>>> www.sandglass-software.com
>>>>>>>>> 
>>>>>>>>> On 1/1/2014 7:15 PM, jleroux@apache.org wrote:
>>>>>>>>>> Author: jleroux
>>>>>>>>>> Date: Thu Jan  2 00:15:38 2014
>>>>>>>>>> New Revision: 1554706
>>>>>>>>>> 
>>>>>>>>>> URL: http://svn.apache.org/r1554706
>>>>>>>>>> Log:
>>>>>>>>>> This is a temporary hack waiting for a better geolocation data model, related with OFBIZ-5453
>>>>>>>>>> 
>>>>>>>>>> Modified:
>>>>>>>>>>         ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java
>>>>>>>>>> 
>>>>>>>>>> Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java
>>>>>>>>>> URL:
>>>>>>>>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java?rev=1554706&r1=1554705&r2=1554706&view=diff
>>>>>>>>>> ============================================================================== ---
>>>>>>>>>> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java (original) +++
>>>>>>>>>> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java Thu Jan  2 00:15:38 2014 @@ -144,10
>>>>>>>>>>                      +144,17 @@ public final class SetOperation extends Debug.logWarning(exc, "Error evaluating scriptlet
>>>>>>>>>>                  [" + this.scriptlet + "]: " + exc, module); }
>>>>>>>>>>              } else if (!this.fromFma.isEmpty()) {
>>>>>>>>>> +            Locale localeTemp = null; // FIXME this is a temporary hack waiting for a better geolocation data model,
>>>>>>>>>>                  related with OFBIZ-5453 if (!this.localeFse.isEmpty() && this.type.length() > 0) {
>>>>>>>>>> -                methodContext.setLocale(new Locale(this.localeFse.expandString(methodContext.getEnvMap())));
>>>>>>>>>> +                localeTemp = methodContext.getLocale();
>>>>>>>>>> +                synchronized (this) {
>>>>>>>>>> +                    methodContext.setLocale(new Locale(this.localeFse.expandString(methodContext.getEnvMap())));
>>>>>>>>>> +                    newValue = this.fromFma.get(methodContext.getEnvMap());
>>>>>>>>>> +                    methodContext.setLocale(localeTemp);
>>>>>>>>>> +                }
>>>>>>>>>> +            } else {
>>>>>>>>>> +                newValue = this.fromFma.get(methodContext.getEnvMap());
>>>>>>>>>>                  }
>>>>>>>>>> -            newValue = this.fromFma.get(methodContext.getEnvMap());
>>>>>>>>>>                  if (Debug.verboseOn())
>>>>>>>>>>                      Debug.logVerbose("In screen getting value for field from [" + this.fromFma.toString() + "]: " +
>>>>>>>>>>              newValue, module); } else if (!this.valueFse.isEmpty()) {

Re: svn commit: r1554706 - /ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOpe ration.java

Posted by Jacques Le Roux <ja...@les7arts.com>.
In this case we are no converting data, we want to transfer a Float from a point to another.
We are using this  built-in http://freemarker.org/docs/ref_builtins_number.html#ref_builtin_c

Jacques

On Thursday, January 02, 2014 2:52 PM adrian.crum@sandglass-software.com wrote
> You are not understanding the problem and I don't know how to make it
> any simpler.
> 
> Mini-language and screen widgets both utilize the conversion framework
> to convert data types. The conversion framework is thoroughly tested and
> Float <--> String conversions work perfectly. If you are having a
> problem, then it is somewhere else - NOT in Mini-language or screen widgets.
> 
> Adrian Crum
> Sandglass Software
> www.sandglass-software.com
> 
> On 1/2/2014 8:10 AM, Jacques Le Roux wrote:
>> No, it's not the template. Actually as soon as you pass in SetField.runAction() (for widgets, similar for minilang) and have
>> (for instance) fr as locale in your env, you are screwed: the decimals are lost. That's why I changed things there.
>> 
>> Moreover this issue does not appear for points which comes directly from the DB and use the same path to the geoLocation.ftl
>> template but no set field 
>> For instance partymgr/control/PartyGeoLocation?partyId=DemoCustomer
>> or facility/control/EditFacilityGeoPoint?facilityId=WebStoreWarehouse
>> 
>> Jacques
>> 
>> On Thursday, January 02, 2014 1:08 PM adrian.crum@sandglass-software.com wrote
>>> That appears to be a problem in the template.
>>> 
>>> Adrian Crum
>>> Sandglass Software
>>> www.sandglass-software.com
>>> 
>>> On 1/2/2014 6:40 AM, Jacques Le Roux wrote:
>>>> I'm not quite sure to follow you. For isntance, currently if you change
>>>>    type="Float" locale="en"/>
>>>> for
>>>> />
>>>> in
>>>> <screen name="ExampleGeoLocationPointSet1">
>>>> 
>>>> You get an error in HtmlWidget.StringHtmlWrapperForFtl():
>>>> freemarker.core.NonNumericalException: point.lon is not a number, it is
>>>> org.ofbiz.widget.screen.HtmlWidget$StringHtmlWrapperForFtl
>>>> 
>>>> Jacques
>>>> 
>>>> On Thursday, January 02, 2014 12:23 PM adrian.crum@sandglass-software.com wrote
>>>>> The String would be converted to a Float. What would be the issue?
>>>>> 
>>>>> Adrian Crum
>>>>> Sandglass Software
>>>>> www.sandglass-software.com
>>>>> 
>>>>> On 1/2/2014 6:12 AM, Jacques Le Roux wrote:
>>>>>> Though Adrian,
>>>>>> 
>>>>>> There is something which makes me wonder.
>>>>>> 
>>>>>> Suppose we were not in the geolocation context, and we want to set a Float value like it's done in
>>>>>> 
>>>>>> <screen name="ExampleGeoLocationPointSet1">
>>>>>> and
>>>>>> <simple-method method-name="editGeoLocation" short-description="Edit GeoLocation">
>>>>>> 
>>>>>> And we have a floating-point DB field
>>>>>> 
>>>>>> Won't we get the same issue?
>>>>>> 
>>>>>> Jacques
>>>>>> 
>>>>>> 
>>>>>> On Thursday, January 02, 2014 8:52 AM jacques.le.roux@les7arts.com wrote
>>>>>>> It's just a temporary hack I hastily commited last night, so as I was unsure I preferred to be safe than sorry.
>>>>>>> Good to know that MethodContext is thread safe.
>>>>>>> 
>>>>>>> I have still to check but your new data model proposition sounds to me at 1st glance.
>>>>>>> 
>>>>>>> Note that the current works well, even for i18n, as long as you only use a direct relation with data.
>>>>>>> But if you use <set> to save your data in DB then the problem arises.. That's why I got this way...
>>>>>>> 
>>>>>>> Jacques
>>>>>>> 
>>>>>>> On Thursday, January 02, 2014 1:39 AM adrian.crum@sandglass-software.com wrote
>>>>>>>> There is no need to synchronize on the <set> element model - it is
>>>>>>>> thread-safe. The MethodContext instance is per-thread, so it doesn't
>>>>>>>> need synchronization either.
>>>>>>>> 
>>>>>>>> Please take some time to understand the architecture before committing
>>>>>>>> changes like this.
>>>>>>>> 
>>>>>>>> Adrian Crum
>>>>>>>> Sandglass Software
>>>>>>>> www.sandglass-software.com
>>>>>>>> 
>>>>>>>> On 1/1/2014 7:15 PM, jleroux@apache.org wrote:
>>>>>>>>> Author: jleroux
>>>>>>>>> Date: Thu Jan  2 00:15:38 2014
>>>>>>>>> New Revision: 1554706
>>>>>>>>> 
>>>>>>>>> URL: http://svn.apache.org/r1554706
>>>>>>>>> Log:
>>>>>>>>> This is a temporary hack waiting for a better geolocation data model, related with OFBIZ-5453
>>>>>>>>> 
>>>>>>>>> Modified:
>>>>>>>>>         ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java
>>>>>>>>> 
>>>>>>>>> Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java
>>>>>>>>> URL:
>>>>>>>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java?rev=1554706&r1=1554705&r2=1554706&view=diff
>>>>>>>>> ============================================================================== ---
>>>>>>>>> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java (original) +++
>>>>>>>>> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java Thu Jan  2 00:15:38 2014 @@ -144,10
>>>>>>>>>                      +144,17 @@ public final class SetOperation extends Debug.logWarning(exc, "Error evaluating scriptlet
>>>>>>>>>                  [" + this.scriptlet + "]: " + exc, module); }
>>>>>>>>>              } else if (!this.fromFma.isEmpty()) {
>>>>>>>>> +            Locale localeTemp = null; // FIXME this is a temporary hack waiting for a better geolocation data model,
>>>>>>>>>                  related with OFBIZ-5453 if (!this.localeFse.isEmpty() && this.type.length() > 0) {
>>>>>>>>> -                methodContext.setLocale(new Locale(this.localeFse.expandString(methodContext.getEnvMap())));
>>>>>>>>> +                localeTemp = methodContext.getLocale();
>>>>>>>>> +                synchronized (this) {
>>>>>>>>> +                    methodContext.setLocale(new Locale(this.localeFse.expandString(methodContext.getEnvMap())));
>>>>>>>>> +                    newValue = this.fromFma.get(methodContext.getEnvMap());
>>>>>>>>> +                    methodContext.setLocale(localeTemp);
>>>>>>>>> +                }
>>>>>>>>> +            } else {
>>>>>>>>> +                newValue = this.fromFma.get(methodContext.getEnvMap());
>>>>>>>>>                  }
>>>>>>>>> -            newValue = this.fromFma.get(methodContext.getEnvMap());
>>>>>>>>>                  if (Debug.verboseOn())
>>>>>>>>>                      Debug.logVerbose("In screen getting value for field from [" + this.fromFma.toString() + "]: " +
>>>>>>>>>              newValue, module); } else if (!this.valueFse.isEmpty()) {

Re: svn commit: r1554706 - /ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOpe ration.java

Posted by Adrian Crum <ad...@sandglass-software.com>.
You are not understanding the problem and I don't know how to make it 
any simpler.

Mini-language and screen widgets both utilize the conversion framework 
to convert data types. The conversion framework is thoroughly tested and 
Float <--> String conversions work perfectly. If you are having a 
problem, then it is somewhere else - NOT in Mini-language or screen widgets.

Adrian Crum
Sandglass Software
www.sandglass-software.com

On 1/2/2014 8:10 AM, Jacques Le Roux wrote:
> No, it's not the template. Actually as soon as you pass in SetField.runAction() (for widgets, similar for minilang) and have (for instance) fr as locale in your env, you are screwed: the decimals are lost.
> That's why I changed things there.
>
> Moreover this issue does not appear for points which comes directly from the DB and use the same path to the geoLocation.ftl template but no set field
> For instance partymgr/control/PartyGeoLocation?partyId=DemoCustomer
> or facility/control/EditFacilityGeoPoint?facilityId=WebStoreWarehouse
>
> Jacques
>
> On Thursday, January 02, 2014 1:08 PM adrian.crum@sandglass-software.com wrote
>> That appears to be a problem in the template.
>>
>> Adrian Crum
>> Sandglass Software
>> www.sandglass-software.com
>>
>> On 1/2/2014 6:40 AM, Jacques Le Roux wrote:
>>> I'm not quite sure to follow you. For isntance, currently if you change
>>>    type="Float" locale="en"/>
>>> for
>>> />
>>> in
>>> <screen name="ExampleGeoLocationPointSet1">
>>>
>>> You get an error in HtmlWidget.StringHtmlWrapperForFtl():
>>> freemarker.core.NonNumericalException: point.lon is not a number, it is
>>> org.ofbiz.widget.screen.HtmlWidget$StringHtmlWrapperForFtl
>>>
>>> Jacques
>>>
>>> On Thursday, January 02, 2014 12:23 PM adrian.crum@sandglass-software.com wrote
>>>> The String would be converted to a Float. What would be the issue?
>>>>
>>>> Adrian Crum
>>>> Sandglass Software
>>>> www.sandglass-software.com
>>>>
>>>> On 1/2/2014 6:12 AM, Jacques Le Roux wrote:
>>>>> Though Adrian,
>>>>>
>>>>> There is something which makes me wonder.
>>>>>
>>>>> Suppose we were not in the geolocation context, and we want to set a Float value like it's done in
>>>>>
>>>>> <screen name="ExampleGeoLocationPointSet1">
>>>>> and
>>>>> <simple-method method-name="editGeoLocation" short-description="Edit GeoLocation">
>>>>>
>>>>> And we have a floating-point DB field
>>>>>
>>>>> Won't we get the same issue?
>>>>>
>>>>> Jacques
>>>>>
>>>>>
>>>>> On Thursday, January 02, 2014 8:52 AM jacques.le.roux@les7arts.com wrote
>>>>>> It's just a temporary hack I hastily commited last night, so as I was unsure I preferred to be safe than sorry.
>>>>>> Good to know that MethodContext is thread safe.
>>>>>>
>>>>>> I have still to check but your new data model proposition sounds to me at 1st glance.
>>>>>>
>>>>>> Note that the current works well, even for i18n, as long as you only use a direct relation with data.
>>>>>> But if you use <set> to save your data in DB then the problem arises.. That's why I got this way...
>>>>>>
>>>>>> Jacques
>>>>>>
>>>>>> On Thursday, January 02, 2014 1:39 AM adrian.crum@sandglass-software.com wrote
>>>>>>> There is no need to synchronize on the <set> element model - it is
>>>>>>> thread-safe. The MethodContext instance is per-thread, so it doesn't
>>>>>>> need synchronization either.
>>>>>>>
>>>>>>> Please take some time to understand the architecture before committing
>>>>>>> changes like this.
>>>>>>>
>>>>>>> Adrian Crum
>>>>>>> Sandglass Software
>>>>>>> www.sandglass-software.com
>>>>>>>
>>>>>>> On 1/1/2014 7:15 PM, jleroux@apache.org wrote:
>>>>>>>> Author: jleroux
>>>>>>>> Date: Thu Jan  2 00:15:38 2014
>>>>>>>> New Revision: 1554706
>>>>>>>>
>>>>>>>> URL: http://svn.apache.org/r1554706
>>>>>>>> Log:
>>>>>>>> This is a temporary hack waiting for a better geolocation data model, related with OFBIZ-5453
>>>>>>>>
>>>>>>>> Modified:
>>>>>>>>         ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java
>>>>>>>>
>>>>>>>> Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java
>>>>>>>> URL:
>>>>>>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java?rev=1554706&r1=1554705&r2=1554706&view=diff
>>>>>>>> ============================================================================== ---
>>>>>>>> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java (original) +++
>>>>>>>> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java Thu Jan  2 00:15:38 2014 @@ -144,10
>>>>>>>>                      +144,17 @@ public final class SetOperation extends Debug.logWarning(exc, "Error evaluating scriptlet ["
>>>>>>>>                  + this.scriptlet + "]: " + exc, module); }
>>>>>>>>              } else if (!this.fromFma.isEmpty()) {
>>>>>>>> +            Locale localeTemp = null; // FIXME this is a temporary hack waiting for a better geolocation data model,
>>>>>>>>                  related with OFBIZ-5453 if (!this.localeFse.isEmpty() && this.type.length() > 0) {
>>>>>>>> -                methodContext.setLocale(new Locale(this.localeFse.expandString(methodContext.getEnvMap())));
>>>>>>>> +                localeTemp = methodContext.getLocale();
>>>>>>>> +                synchronized (this) {
>>>>>>>> +                    methodContext.setLocale(new Locale(this.localeFse.expandString(methodContext.getEnvMap())));
>>>>>>>> +                    newValue = this.fromFma.get(methodContext.getEnvMap());
>>>>>>>> +                    methodContext.setLocale(localeTemp);
>>>>>>>> +                }
>>>>>>>> +            } else {
>>>>>>>> +                newValue = this.fromFma.get(methodContext.getEnvMap());
>>>>>>>>                  }
>>>>>>>> -            newValue = this.fromFma.get(methodContext.getEnvMap());
>>>>>>>>                  if (Debug.verboseOn())
>>>>>>>>                      Debug.logVerbose("In screen getting value for field from [" + this.fromFma.toString() + "]: " +
>>>>>>>>              newValue, module); } else if (!this.valueFse.isEmpty()) {

Re: svn commit: r1554706 - /ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOpe ration.java

Posted by Jacques Le Roux <ja...@les7arts.com>.
No, it's not the template. Actually as soon as you pass in SetField.runAction() (for widgets, similar for minilang) and have (for instance) fr as locale in your env, you are screwed: the decimals are lost.
That's why I changed things there.

Moreover this issue does not appear for points which comes directly from the DB and use the same path to the geoLocation.ftl template but no set field
For instance partymgr/control/PartyGeoLocation?partyId=DemoCustomer
or facility/control/EditFacilityGeoPoint?facilityId=WebStoreWarehouse

Jacques

On Thursday, January 02, 2014 1:08 PM adrian.crum@sandglass-software.com wrote
> That appears to be a problem in the template.
> 
> Adrian Crum
> Sandglass Software
> www.sandglass-software.com
> 
> On 1/2/2014 6:40 AM, Jacques Le Roux wrote:
>> I'm not quite sure to follow you. For isntance, currently if you change
>>   type="Float" locale="en"/>
>> for
>> />
>> in
>> <screen name="ExampleGeoLocationPointSet1">
>> 
>> You get an error in HtmlWidget.StringHtmlWrapperForFtl():
>> freemarker.core.NonNumericalException: point.lon is not a number, it is
>> org.ofbiz.widget.screen.HtmlWidget$StringHtmlWrapperForFtl 
>> 
>> Jacques
>> 
>> On Thursday, January 02, 2014 12:23 PM adrian.crum@sandglass-software.com wrote
>>> The String would be converted to a Float. What would be the issue?
>>> 
>>> Adrian Crum
>>> Sandglass Software
>>> www.sandglass-software.com
>>> 
>>> On 1/2/2014 6:12 AM, Jacques Le Roux wrote:
>>>> Though Adrian,
>>>> 
>>>> There is something which makes me wonder.
>>>> 
>>>> Suppose we were not in the geolocation context, and we want to set a Float value like it's done in
>>>> 
>>>> <screen name="ExampleGeoLocationPointSet1">
>>>> and
>>>> <simple-method method-name="editGeoLocation" short-description="Edit GeoLocation">
>>>> 
>>>> And we have a floating-point DB field
>>>> 
>>>> Won't we get the same issue?
>>>> 
>>>> Jacques
>>>> 
>>>> 
>>>> On Thursday, January 02, 2014 8:52 AM jacques.le.roux@les7arts.com wrote
>>>>> It's just a temporary hack I hastily commited last night, so as I was unsure I preferred to be safe than sorry.
>>>>> Good to know that MethodContext is thread safe.
>>>>> 
>>>>> I have still to check but your new data model proposition sounds to me at 1st glance.
>>>>> 
>>>>> Note that the current works well, even for i18n, as long as you only use a direct relation with data.
>>>>> But if you use <set> to save your data in DB then the problem arises.. That's why I got this way...
>>>>> 
>>>>> Jacques
>>>>> 
>>>>> On Thursday, January 02, 2014 1:39 AM adrian.crum@sandglass-software.com wrote
>>>>>> There is no need to synchronize on the <set> element model - it is
>>>>>> thread-safe. The MethodContext instance is per-thread, so it doesn't
>>>>>> need synchronization either.
>>>>>> 
>>>>>> Please take some time to understand the architecture before committing
>>>>>> changes like this.
>>>>>> 
>>>>>> Adrian Crum
>>>>>> Sandglass Software
>>>>>> www.sandglass-software.com
>>>>>> 
>>>>>> On 1/1/2014 7:15 PM, jleroux@apache.org wrote:
>>>>>>> Author: jleroux
>>>>>>> Date: Thu Jan  2 00:15:38 2014
>>>>>>> New Revision: 1554706
>>>>>>> 
>>>>>>> URL: http://svn.apache.org/r1554706
>>>>>>> Log:
>>>>>>> This is a temporary hack waiting for a better geolocation data model, related with OFBIZ-5453
>>>>>>> 
>>>>>>> Modified:
>>>>>>>        ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java
>>>>>>> 
>>>>>>> Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java
>>>>>>> URL:
>>>>>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java?rev=1554706&r1=1554705&r2=1554706&view=diff
>>>>>>> ============================================================================== ---
>>>>>>> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java (original) +++
>>>>>>> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java Thu Jan  2 00:15:38 2014 @@ -144,10
>>>>>>>                     +144,17 @@ public final class SetOperation extends Debug.logWarning(exc, "Error evaluating scriptlet ["
>>>>>>>                 + this.scriptlet + "]: " + exc, module); }
>>>>>>>             } else if (!this.fromFma.isEmpty()) {
>>>>>>> +            Locale localeTemp = null; // FIXME this is a temporary hack waiting for a better geolocation data model,
>>>>>>>                 related with OFBIZ-5453 if (!this.localeFse.isEmpty() && this.type.length() > 0) {
>>>>>>> -                methodContext.setLocale(new Locale(this.localeFse.expandString(methodContext.getEnvMap())));
>>>>>>> +                localeTemp = methodContext.getLocale();
>>>>>>> +                synchronized (this) {
>>>>>>> +                    methodContext.setLocale(new Locale(this.localeFse.expandString(methodContext.getEnvMap())));
>>>>>>> +                    newValue = this.fromFma.get(methodContext.getEnvMap());
>>>>>>> +                    methodContext.setLocale(localeTemp);
>>>>>>> +                }
>>>>>>> +            } else {
>>>>>>> +                newValue = this.fromFma.get(methodContext.getEnvMap());
>>>>>>>                 }
>>>>>>> -            newValue = this.fromFma.get(methodContext.getEnvMap());
>>>>>>>                 if (Debug.verboseOn())
>>>>>>>                     Debug.logVerbose("In screen getting value for field from [" + this.fromFma.toString() + "]: " +
>>>>>>>             newValue, module); } else if (!this.valueFse.isEmpty()) {

Re: svn commit: r1554706 - /ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOpe ration.java

Posted by Adrian Crum <ad...@sandglass-software.com>.
That appears to be a problem in the template.

Adrian Crum
Sandglass Software
www.sandglass-software.com

On 1/2/2014 6:40 AM, Jacques Le Roux wrote:
> I'm not quite sure to follow you. For isntance, currently if you change
>   type="Float" locale="en"/>
> for
> />
> in
> <screen name="ExampleGeoLocationPointSet1">
>
> You get an error in HtmlWidget.StringHtmlWrapperForFtl():
> freemarker.core.NonNumericalException: point.lon is not a number, it is org.ofbiz.widget.screen.HtmlWidget$StringHtmlWrapperForFtl
>
> Jacques
>
> On Thursday, January 02, 2014 12:23 PM adrian.crum@sandglass-software.com wrote
>> The String would be converted to a Float. What would be the issue?
>>
>> Adrian Crum
>> Sandglass Software
>> www.sandglass-software.com
>>
>> On 1/2/2014 6:12 AM, Jacques Le Roux wrote:
>>> Though Adrian,
>>>
>>> There is something which makes me wonder.
>>>
>>> Suppose we were not in the geolocation context, and we want to set a Float value like it's done in
>>>
>>> <screen name="ExampleGeoLocationPointSet1">
>>> and
>>> <simple-method method-name="editGeoLocation" short-description="Edit GeoLocation">
>>>
>>> And we have a floating-point DB field
>>>
>>> Won't we get the same issue?
>>>
>>> Jacques
>>>
>>>
>>> On Thursday, January 02, 2014 8:52 AM jacques.le.roux@les7arts.com wrote
>>>> It's just a temporary hack I hastily commited last night, so as I was unsure I preferred to be safe than sorry.
>>>> Good to know that MethodContext is thread safe.
>>>>
>>>> I have still to check but your new data model proposition sounds to me at 1st glance.
>>>>
>>>> Note that the current works well, even for i18n, as long as you only use a direct relation with data.
>>>> But if you use <set> to save your data in DB then the problem arises.. That's why I got this way...
>>>>
>>>> Jacques
>>>>
>>>> On Thursday, January 02, 2014 1:39 AM adrian.crum@sandglass-software.com wrote
>>>>> There is no need to synchronize on the <set> element model - it is
>>>>> thread-safe. The MethodContext instance is per-thread, so it doesn't
>>>>> need synchronization either.
>>>>>
>>>>> Please take some time to understand the architecture before committing
>>>>> changes like this.
>>>>>
>>>>> Adrian Crum
>>>>> Sandglass Software
>>>>> www.sandglass-software.com
>>>>>
>>>>> On 1/1/2014 7:15 PM, jleroux@apache.org wrote:
>>>>>> Author: jleroux
>>>>>> Date: Thu Jan  2 00:15:38 2014
>>>>>> New Revision: 1554706
>>>>>>
>>>>>> URL: http://svn.apache.org/r1554706
>>>>>> Log:
>>>>>> This is a temporary hack waiting for a better geolocation data model, related with OFBIZ-5453
>>>>>>
>>>>>> Modified:
>>>>>>        ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java
>>>>>>
>>>>>> Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java?rev=1554706&r1=1554705&r2=1554706&view=diff
>>>>>> ============================================================================== ---
>>>>>> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java (original) +++
>>>>>> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java Thu Jan  2 00:15:38 2014 @@ -144,10
>>>>>>                     +144,17 @@ public final class SetOperation extends Debug.logWarning(exc, "Error evaluating scriptlet [" +
>>>>>>                 this.scriptlet + "]: " + exc, module); }
>>>>>>             } else if (!this.fromFma.isEmpty()) {
>>>>>> +            Locale localeTemp = null; // FIXME this is a temporary hack waiting for a better geolocation data model, related
>>>>>>                 with OFBIZ-5453 if (!this.localeFse.isEmpty() && this.type.length() > 0) {
>>>>>> -                methodContext.setLocale(new Locale(this.localeFse.expandString(methodContext.getEnvMap())));
>>>>>> +                localeTemp = methodContext.getLocale();
>>>>>> +                synchronized (this) {
>>>>>> +                    methodContext.setLocale(new Locale(this.localeFse.expandString(methodContext.getEnvMap())));
>>>>>> +                    newValue = this.fromFma.get(methodContext.getEnvMap());
>>>>>> +                    methodContext.setLocale(localeTemp);
>>>>>> +                }
>>>>>> +            } else {
>>>>>> +                newValue = this.fromFma.get(methodContext.getEnvMap());
>>>>>>                 }
>>>>>> -            newValue = this.fromFma.get(methodContext.getEnvMap());
>>>>>>                 if (Debug.verboseOn())
>>>>>>                     Debug.logVerbose("In screen getting value for field from [" + this.fromFma.toString() + "]: " + newValue,
>>>>>>             module); } else if (!this.valueFse.isEmpty()) {

Re: svn commit: r1554706 - /ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOpe ration.java

Posted by Jacques Le Roux <ja...@les7arts.com>.
I'm not quite sure to follow you. For isntance, currently if you change 
 type="Float" locale="en"/>
for 
/>
in 
<screen name="ExampleGeoLocationPointSet1">

You get an error in HtmlWidget.StringHtmlWrapperForFtl():
freemarker.core.NonNumericalException: point.lon is not a number, it is org.ofbiz.widget.screen.HtmlWidget$StringHtmlWrapperForFtl

Jacques

On Thursday, January 02, 2014 12:23 PM adrian.crum@sandglass-software.com wrote
> The String would be converted to a Float. What would be the issue?
> 
> Adrian Crum
> Sandglass Software
> www.sandglass-software.com
> 
> On 1/2/2014 6:12 AM, Jacques Le Roux wrote:
>> Though Adrian,
>> 
>> There is something which makes me wonder.
>> 
>> Suppose we were not in the geolocation context, and we want to set a Float value like it's done in
>> 
>> <screen name="ExampleGeoLocationPointSet1">
>> and
>> <simple-method method-name="editGeoLocation" short-description="Edit GeoLocation">
>> 
>> And we have a floating-point DB field
>> 
>> Won't we get the same issue?
>> 
>> Jacques
>> 
>> 
>> On Thursday, January 02, 2014 8:52 AM jacques.le.roux@les7arts.com wrote
>>> It's just a temporary hack I hastily commited last night, so as I was unsure I preferred to be safe than sorry.
>>> Good to know that MethodContext is thread safe.
>>> 
>>> I have still to check but your new data model proposition sounds to me at 1st glance.
>>> 
>>> Note that the current works well, even for i18n, as long as you only use a direct relation with data.
>>> But if you use <set> to save your data in DB then the problem arises.. That's why I got this way...
>>> 
>>> Jacques
>>> 
>>> On Thursday, January 02, 2014 1:39 AM adrian.crum@sandglass-software.com wrote
>>>> There is no need to synchronize on the <set> element model - it is
>>>> thread-safe. The MethodContext instance is per-thread, so it doesn't
>>>> need synchronization either.
>>>> 
>>>> Please take some time to understand the architecture before committing
>>>> changes like this.
>>>> 
>>>> Adrian Crum
>>>> Sandglass Software
>>>> www.sandglass-software.com
>>>> 
>>>> On 1/1/2014 7:15 PM, jleroux@apache.org wrote:
>>>>> Author: jleroux
>>>>> Date: Thu Jan  2 00:15:38 2014
>>>>> New Revision: 1554706
>>>>> 
>>>>> URL: http://svn.apache.org/r1554706
>>>>> Log:
>>>>> This is a temporary hack waiting for a better geolocation data model, related with OFBIZ-5453
>>>>> 
>>>>> Modified:
>>>>>       ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java
>>>>> 
>>>>> Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java?rev=1554706&r1=1554705&r2=1554706&view=diff
>>>>> ============================================================================== ---
>>>>> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java (original) +++
>>>>> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java Thu Jan  2 00:15:38 2014 @@ -144,10
>>>>>                    +144,17 @@ public final class SetOperation extends Debug.logWarning(exc, "Error evaluating scriptlet [" +
>>>>>                this.scriptlet + "]: " + exc, module); }
>>>>>            } else if (!this.fromFma.isEmpty()) {
>>>>> +            Locale localeTemp = null; // FIXME this is a temporary hack waiting for a better geolocation data model, related
>>>>>                with OFBIZ-5453 if (!this.localeFse.isEmpty() && this.type.length() > 0) {
>>>>> -                methodContext.setLocale(new Locale(this.localeFse.expandString(methodContext.getEnvMap())));
>>>>> +                localeTemp = methodContext.getLocale();
>>>>> +                synchronized (this) {
>>>>> +                    methodContext.setLocale(new Locale(this.localeFse.expandString(methodContext.getEnvMap())));
>>>>> +                    newValue = this.fromFma.get(methodContext.getEnvMap());
>>>>> +                    methodContext.setLocale(localeTemp);
>>>>> +                }
>>>>> +            } else {
>>>>> +                newValue = this.fromFma.get(methodContext.getEnvMap());
>>>>>                }
>>>>> -            newValue = this.fromFma.get(methodContext.getEnvMap());
>>>>>                if (Debug.verboseOn())
>>>>>                    Debug.logVerbose("In screen getting value for field from [" + this.fromFma.toString() + "]: " + newValue,
>>>>>            module); } else if (!this.valueFse.isEmpty()) {

Re: svn commit: r1554706 - /ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOpe ration.java

Posted by Adrian Crum <ad...@sandglass-software.com>.
The String would be converted to a Float. What would be the issue?

Adrian Crum
Sandglass Software
www.sandglass-software.com

On 1/2/2014 6:12 AM, Jacques Le Roux wrote:
> Though Adrian,
>
> There is something which makes me wonder.
>
> Suppose we were not in the geolocation context, and we want to set a Float value like it's done in
>
> <screen name="ExampleGeoLocationPointSet1">
> and
> <simple-method method-name="editGeoLocation" short-description="Edit GeoLocation">
>
> And we have a floating-point DB field
>
> Won't we get the same issue?
>
> Jacques
>
>
> On Thursday, January 02, 2014 8:52 AM jacques.le.roux@les7arts.com wrote
>> It's just a temporary hack I hastily commited last night, so as I was unsure I preferred to be safe than sorry.
>> Good to know that MethodContext is thread safe.
>>
>> I have still to check but your new data model proposition sounds to me at 1st glance.
>>
>> Note that the current works well, even for i18n, as long as you only use a direct relation with data.
>> But if you use <set> to save your data in DB then the problem arises.. That's why I got this way...
>>
>> Jacques
>>
>> On Thursday, January 02, 2014 1:39 AM adrian.crum@sandglass-software.com wrote
>>> There is no need to synchronize on the <set> element model - it is
>>> thread-safe. The MethodContext instance is per-thread, so it doesn't
>>> need synchronization either.
>>>
>>> Please take some time to understand the architecture before committing
>>> changes like this.
>>>
>>> Adrian Crum
>>> Sandglass Software
>>> www.sandglass-software.com
>>>
>>> On 1/1/2014 7:15 PM, jleroux@apache.org wrote:
>>>> Author: jleroux
>>>> Date: Thu Jan  2 00:15:38 2014
>>>> New Revision: 1554706
>>>>
>>>> URL: http://svn.apache.org/r1554706
>>>> Log:
>>>> This is a temporary hack waiting for a better geolocation data model, related with OFBIZ-5453
>>>>
>>>> Modified:
>>>>       ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java
>>>>
>>>> Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java?rev=1554706&r1=1554705&r2=1554706&view=diff
>>>> ============================================================================== ---
>>>> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java (original) +++
>>>> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java Thu Jan  2 00:15:38 2014 @@ -144,10
>>>>                    +144,17 @@ public final class SetOperation extends Debug.logWarning(exc, "Error evaluating scriptlet [" +
>>>>                this.scriptlet + "]: " + exc, module); }
>>>>            } else if (!this.fromFma.isEmpty()) {
>>>> +            Locale localeTemp = null; // FIXME this is a temporary hack waiting for a better geolocation data model, related
>>>>                with OFBIZ-5453 if (!this.localeFse.isEmpty() && this.type.length() > 0) {
>>>> -                methodContext.setLocale(new Locale(this.localeFse.expandString(methodContext.getEnvMap())));
>>>> +                localeTemp = methodContext.getLocale();
>>>> +                synchronized (this) {
>>>> +                    methodContext.setLocale(new Locale(this.localeFse.expandString(methodContext.getEnvMap())));
>>>> +                    newValue = this.fromFma.get(methodContext.getEnvMap());
>>>> +                    methodContext.setLocale(localeTemp);
>>>> +                }
>>>> +            } else {
>>>> +                newValue = this.fromFma.get(methodContext.getEnvMap());
>>>>                }
>>>> -            newValue = this.fromFma.get(methodContext.getEnvMap());
>>>>                if (Debug.verboseOn())
>>>>                    Debug.logVerbose("In screen getting value for field from [" + this.fromFma.toString() + "]: " + newValue,
>>>>            module); } else if (!this.valueFse.isEmpty()) {

Re: svn commit: r1554706 - /ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOpe ration.java

Posted by Jacques Le Roux <ja...@les7arts.com>.
Though Adrian,

There is something which makes me wonder.

Suppose we were not in the geolocation context, and we want to set a Float value like it's done in

<screen name="ExampleGeoLocationPointSet1">
and
<simple-method method-name="editGeoLocation" short-description="Edit GeoLocation">

And we have a floating-point DB field

Won't we get the same issue?

Jacques


On Thursday, January 02, 2014 8:52 AM jacques.le.roux@les7arts.com wrote
> It's just a temporary hack I hastily commited last night, so as I was unsure I preferred to be safe than sorry.
> Good to know that MethodContext is thread safe.
> 
> I have still to check but your new data model proposition sounds to me at 1st glance.
> 
> Note that the current works well, even for i18n, as long as you only use a direct relation with data.
> But if you use <set> to save your data in DB then the problem arises.. That's why I got this way...
> 
> Jacques
> 
> On Thursday, January 02, 2014 1:39 AM adrian.crum@sandglass-software.com wrote
>> There is no need to synchronize on the <set> element model - it is
>> thread-safe. The MethodContext instance is per-thread, so it doesn't
>> need synchronization either.
>> 
>> Please take some time to understand the architecture before committing
>> changes like this.
>> 
>> Adrian Crum
>> Sandglass Software
>> www.sandglass-software.com
>> 
>> On 1/1/2014 7:15 PM, jleroux@apache.org wrote:
>>> Author: jleroux
>>> Date: Thu Jan  2 00:15:38 2014
>>> New Revision: 1554706
>>> 
>>> URL: http://svn.apache.org/r1554706
>>> Log:
>>> This is a temporary hack waiting for a better geolocation data model, related with OFBIZ-5453
>>> 
>>> Modified:
>>>      ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java
>>> 
>>> Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java
>>> URL:
>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java?rev=1554706&r1=1554705&r2=1554706&view=diff
>>> ============================================================================== ---
>>> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java (original) +++
>>> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java Thu Jan  2 00:15:38 2014 @@ -144,10
>>>                   +144,17 @@ public final class SetOperation extends Debug.logWarning(exc, "Error evaluating scriptlet [" +
>>>               this.scriptlet + "]: " + exc, module); }
>>>           } else if (!this.fromFma.isEmpty()) {
>>> +            Locale localeTemp = null; // FIXME this is a temporary hack waiting for a better geolocation data model, related
>>>               with OFBIZ-5453 if (!this.localeFse.isEmpty() && this.type.length() > 0) {
>>> -                methodContext.setLocale(new Locale(this.localeFse.expandString(methodContext.getEnvMap())));
>>> +                localeTemp = methodContext.getLocale();
>>> +                synchronized (this) {
>>> +                    methodContext.setLocale(new Locale(this.localeFse.expandString(methodContext.getEnvMap())));
>>> +                    newValue = this.fromFma.get(methodContext.getEnvMap());
>>> +                    methodContext.setLocale(localeTemp);
>>> +                }
>>> +            } else {
>>> +                newValue = this.fromFma.get(methodContext.getEnvMap());
>>>               }
>>> -            newValue = this.fromFma.get(methodContext.getEnvMap());
>>>               if (Debug.verboseOn())
>>>                   Debug.logVerbose("In screen getting value for field from [" + this.fromFma.toString() + "]: " + newValue,
>>>           module); } else if (!this.valueFse.isEmpty()) {

Re: svn commit: r1554706 - /ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOpe ration.java

Posted by Jacques Le Roux <ja...@les7arts.com>.
It's just a temporary hack I hastily commited last night, so as I was unsure I preferred to be safe than sorry.
Good to know that MethodContext is thread safe.

I have still to check but your new data model proposition sounds to me at 1st glance.

Note that the current works well, even for i18n, as long as you only use a direct relation with data.
But if you use <set> to save your data in DB then the problem arises.. That's why I got this way...

Jacques

On Thursday, January 02, 2014 1:39 AM adrian.crum@sandglass-software.com wrote
> There is no need to synchronize on the <set> element model - it is
> thread-safe. The MethodContext instance is per-thread, so it doesn't
> need synchronization either.
> 
> Please take some time to understand the architecture before committing
> changes like this.
> 
> Adrian Crum
> Sandglass Software
> www.sandglass-software.com
> 
> On 1/1/2014 7:15 PM, jleroux@apache.org wrote:
>> Author: jleroux
>> Date: Thu Jan  2 00:15:38 2014
>> New Revision: 1554706
>> 
>> URL: http://svn.apache.org/r1554706
>> Log:
>> This is a temporary hack waiting for a better geolocation data model, related with OFBIZ-5453
>> 
>> Modified:
>>      ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java
>> 
>> Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java?rev=1554706&r1=1554705&r2=1554706&view=diff
>> ============================================================================== ---
>> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java (original) +++
>> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java Thu Jan  2 00:15:38 2014 @@ -144,10
>>                   +144,17 @@ public final class SetOperation extends Debug.logWarning(exc, "Error evaluating scriptlet [" +
>>               this.scriptlet + "]: " + exc, module); }
>>           } else if (!this.fromFma.isEmpty()) {
>> +            Locale localeTemp = null; // FIXME this is a temporary hack waiting for a better geolocation data model, related
>>               with OFBIZ-5453 if (!this.localeFse.isEmpty() && this.type.length() > 0) {
>> -                methodContext.setLocale(new Locale(this.localeFse.expandString(methodContext.getEnvMap())));
>> +                localeTemp = methodContext.getLocale();
>> +                synchronized (this) {
>> +                    methodContext.setLocale(new Locale(this.localeFse.expandString(methodContext.getEnvMap())));
>> +                    newValue = this.fromFma.get(methodContext.getEnvMap());
>> +                    methodContext.setLocale(localeTemp);
>> +                }
>> +            } else {
>> +                newValue = this.fromFma.get(methodContext.getEnvMap());
>>               }
>> -            newValue = this.fromFma.get(methodContext.getEnvMap());
>>               if (Debug.verboseOn())
>>                   Debug.logVerbose("In screen getting value for field from [" + this.fromFma.toString() + "]: " + newValue,
>>           module); } else if (!this.valueFse.isEmpty()) {