GString to String

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

GString to String

Jacques Le Roux
Administrator
Hi,

I spotted this error in log

2021-02-13 10:17:03,503 |jsse-nio-8443-exec-8 |Converters                    |W| *** No converter found, converting from
org.codehaus.groovy.runtime.GStringImpl to java.lang.String. Please report this message to the developer community s
o a suitable converter can be created. ***
2021-02-13 10:17:03,503 |jsse-nio-8443-exec-8 |ObjectType                    |E| null
java.lang.ClassNotFoundException: No converter found for org.codehaus.groovy.runtime.GStringImpl->java.lang.String
         at org.apache.ofbiz.base.conversion.Converters.getConverter(Converters.java:119) ~[main/:?]
         at org.apache.ofbiz.base.util.ObjectType.simpleTypeOrObjectConvert(ObjectType.java:328) [main/:?]
         at org.apache.ofbiz.base.util.ObjectType.simpleTypeOrObjectConvert(ObjectType.java:256) [main/:?]
         at org.apache.ofbiz.base.util.ObjectType.simpleTypeOrObjectConvert(ObjectType.java:375) [main/:?]
         at org.apache.ofbiz.entity.GenericEntity.set(GenericEntity.java:550) [main/:?]
         at org.apache.ofbiz.entity.GenericEntity.set(GenericEntity.java:502) [main/:?]
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_202]
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_202]
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_202]
         at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_202]
         at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:101) [groovy-2.5.11.jar:2.5.11]
         at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) [groovy-2.5.11.jar:2.5.11]
         at groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:2754) [groovy-2.5.11.jar:2.5.11]
         at groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:3809) [groovy-2.5.11.jar:2.5.11]
         at org.codehaus.groovy.runtime.InvokerHelper.setProperty(InvokerHelper.java:217) [groovy-2.5.11.jar:2.5.11]
         at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.setProperty(ScriptBytecodeAdapter.java:496) [groovy-2.5.11.jar:2.5.11]
         at DataServices.saveLocalFileDataResource(DataServices.groovy:280) [script:?]
         at DataServices$saveLocalFileDataResource.callCurrent(Unknown Source) [script:?]
         at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51) [groovy-2.5.11.jar:2.5.11]
         at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:156) [groovy-2.5.11.jar:2.5.11]
         at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:168) [groovy-2.5.11.jar:2.5.11]
         at DataServices.attachUploadToDataResource(DataServices.groovy:191) [script:?]
[...]
2021-02-13 10:17:03,507 |jsse-nio-8443-exec-8 |ObjectType                    |I| No special conversion required for
org.codehaus.groovy.runtime.GStringImpl to String, returning object.toString().

To prevent this message, I propose to bypass GString to String conversion.

What do you think?

Jacques

Reply | Threaded
Open this post in threaded view
|

Re: GString to String

Nicolas Malin-2
I'm agree Jacques with that.

Some time on specific customer code I was confronted to bad gstring
conversion on groovy service because I forgot that "this ${code}" isn't
a string in groovy !

:)

Nicolas


On 13/02/2021 13:48, Jacques Le Roux wrote:

> Hi,
>
> I spotted this error in log
>
> 2021-02-13 10:17:03,503 |jsse-nio-8443-exec-8
> |Converters                    |W| *** No converter found, converting
> from org.codehaus.groovy.runtime.GStringImpl to java.lang.String.
> Please report this message to the developer community s
> o a suitable converter can be created. ***
> 2021-02-13 10:17:03,503 |jsse-nio-8443-exec-8
> |ObjectType                    |E| null
> java.lang.ClassNotFoundException: No converter found for
> org.codehaus.groovy.runtime.GStringImpl->java.lang.String
>         at
> org.apache.ofbiz.base.conversion.Converters.getConverter(Converters.java:119)
> ~[main/:?]
>         at
> org.apache.ofbiz.base.util.ObjectType.simpleTypeOrObjectConvert(ObjectType.java:328)
> [main/:?]
>         at
> org.apache.ofbiz.base.util.ObjectType.simpleTypeOrObjectConvert(ObjectType.java:256)
> [main/:?]
>         at
> org.apache.ofbiz.base.util.ObjectType.simpleTypeOrObjectConvert(ObjectType.java:375)
> [main/:?]
>         at
> org.apache.ofbiz.entity.GenericEntity.set(GenericEntity.java:550)
> [main/:?]
>         at
> org.apache.ofbiz.entity.GenericEntity.set(GenericEntity.java:502)
> [main/:?]
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> ~[?:1.8.0_202]
>         at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> ~[?:1.8.0_202]
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> ~[?:1.8.0_202]
>         at java.lang.reflect.Method.invoke(Method.java:498)
> ~[?:1.8.0_202]
>         at
> org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:101)
> [groovy-2.5.11.jar:2.5.11]
>         at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
> [groovy-2.5.11.jar:2.5.11]
>         at
> groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:2754)
> [groovy-2.5.11.jar:2.5.11]
>         at
> groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:3809)
> [groovy-2.5.11.jar:2.5.11]
>         at
> org.codehaus.groovy.runtime.InvokerHelper.setProperty(InvokerHelper.java:217)
> [groovy-2.5.11.jar:2.5.11]
>         at
> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.setProperty(ScriptBytecodeAdapter.java:496)
> [groovy-2.5.11.jar:2.5.11]
>         at
> DataServices.saveLocalFileDataResource(DataServices.groovy:280)
> [script:?]
>         at DataServices$saveLocalFileDataResource.callCurrent(Unknown
> Source) [script:?]
>         at
> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51)
> [groovy-2.5.11.jar:2.5.11]
>         at
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:156)
> [groovy-2.5.11.jar:2.5.11]
>         at
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:168)
> [groovy-2.5.11.jar:2.5.11]
>         at
> DataServices.attachUploadToDataResource(DataServices.groovy:191)
> [script:?]
> [...]
> 2021-02-13 10:17:03,507 |jsse-nio-8443-exec-8
> |ObjectType                    |I| No special conversion required for
> org.codehaus.groovy.runtime.GStringImpl to String, returning
> object.toString().
>
> To prevent this message, I propose to bypass GString to String
> conversion.
>
> What do you think?
>
> Jacques
>
Reply | Threaded
Open this post in threaded view
|

Re: GString to String

Jacques Le Roux
Administrator
Thanks Nicolas,

Since nobody seems against I'll do so with https://issues.apache.org/jira/browse/OFBIZ-12182

Jacques

Le 15/02/2021 à 18:33, Nicolas Malin a écrit :

> I'm agree Jacques with that.
>
> Some time on specific customer code I was confronted to bad gstring
> conversion on groovy service because I forgot that "this ${code}" isn't
> a string in groovy !
>
> :)
>
> Nicolas
>
>
> On 13/02/2021 13:48, Jacques Le Roux wrote:
>> Hi,
>>
>> I spotted this error in log
>>
>> 2021-02-13 10:17:03,503 |jsse-nio-8443-exec-8
>> |Converters                    |W| *** No converter found, converting
>> from org.codehaus.groovy.runtime.GStringImpl to java.lang.String.
>> Please report this message to the developer community s
>> o a suitable converter can be created. ***
>> 2021-02-13 10:17:03,503 |jsse-nio-8443-exec-8
>> |ObjectType                    |E| null
>> java.lang.ClassNotFoundException: No converter found for
>> org.codehaus.groovy.runtime.GStringImpl->java.lang.String
>>          at
>> org.apache.ofbiz.base.conversion.Converters.getConverter(Converters.java:119)
>> ~[main/:?]
>>          at
>> org.apache.ofbiz.base.util.ObjectType.simpleTypeOrObjectConvert(ObjectType.java:328)
>> [main/:?]
>>          at
>> org.apache.ofbiz.base.util.ObjectType.simpleTypeOrObjectConvert(ObjectType.java:256)
>> [main/:?]
>>          at
>> org.apache.ofbiz.base.util.ObjectType.simpleTypeOrObjectConvert(ObjectType.java:375)
>> [main/:?]
>>          at
>> org.apache.ofbiz.entity.GenericEntity.set(GenericEntity.java:550)
>> [main/:?]
>>          at
>> org.apache.ofbiz.entity.GenericEntity.set(GenericEntity.java:502)
>> [main/:?]
>>          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> ~[?:1.8.0_202]
>>          at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>> ~[?:1.8.0_202]
>>          at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> ~[?:1.8.0_202]
>>          at java.lang.reflect.Method.invoke(Method.java:498)
>> ~[?:1.8.0_202]
>>          at
>> org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:101)
>> [groovy-2.5.11.jar:2.5.11]
>>          at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
>> [groovy-2.5.11.jar:2.5.11]
>>          at
>> groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:2754)
>> [groovy-2.5.11.jar:2.5.11]
>>          at
>> groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:3809)
>> [groovy-2.5.11.jar:2.5.11]
>>          at
>> org.codehaus.groovy.runtime.InvokerHelper.setProperty(InvokerHelper.java:217)
>> [groovy-2.5.11.jar:2.5.11]
>>          at
>> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.setProperty(ScriptBytecodeAdapter.java:496)
>> [groovy-2.5.11.jar:2.5.11]
>>          at
>> DataServices.saveLocalFileDataResource(DataServices.groovy:280)
>> [script:?]
>>          at DataServices$saveLocalFileDataResource.callCurrent(Unknown
>> Source) [script:?]
>>          at
>> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51)
>> [groovy-2.5.11.jar:2.5.11]
>>          at
>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:156)
>> [groovy-2.5.11.jar:2.5.11]
>>          at
>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:168)
>> [groovy-2.5.11.jar:2.5.11]
>>          at
>> DataServices.attachUploadToDataResource(DataServices.groovy:191)
>> [script:?]
>> [...]
>> 2021-02-13 10:17:03,507 |jsse-nio-8443-exec-8
>> |ObjectType                    |I| No special conversion required for
>> org.codehaus.groovy.runtime.GStringImpl to String, returning
>> object.toString().
>>
>> To prevent this message, I propose to bypass GString to String
>> conversion.
>>
>> What do you think?
>>
>> Jacques
>>
Reply | Threaded
Open this post in threaded view
|

Re: GString to String

Michael Brohl-3
What impact does this change have?

Thanks,

Michael


Am 18.02.21 um 17:33 schrieb Jacques Le Roux:

> Thanks Nicolas,
>
> Since nobody seems against I'll do so with
> https://issues.apache.org/jira/browse/OFBIZ-12182
>
> Jacques
>
> Le 15/02/2021 à 18:33, Nicolas Malin a écrit :
>> I'm agree Jacques with that.
>>
>> Some time on specific customer code I was confronted to bad gstring
>> conversion on groovy service because I forgot that "this ${code}" isn't
>> a string in groovy !
>>
>> :)
>>
>> Nicolas
>>
>>
>> On 13/02/2021 13:48, Jacques Le Roux wrote:
>>> Hi,
>>>
>>> I spotted this error in log
>>>
>>> 2021-02-13 10:17:03,503 |jsse-nio-8443-exec-8
>>> |Converters                    |W| *** No converter found, converting
>>> from org.codehaus.groovy.runtime.GStringImpl to java.lang.String.
>>> Please report this message to the developer community s
>>> o a suitable converter can be created. ***
>>> 2021-02-13 10:17:03,503 |jsse-nio-8443-exec-8
>>> |ObjectType                    |E| null
>>> java.lang.ClassNotFoundException: No converter found for
>>> org.codehaus.groovy.runtime.GStringImpl->java.lang.String
>>>          at
>>> org.apache.ofbiz.base.conversion.Converters.getConverter(Converters.java:119)
>>>
>>> ~[main/:?]
>>>          at
>>> org.apache.ofbiz.base.util.ObjectType.simpleTypeOrObjectConvert(ObjectType.java:328)
>>>
>>> [main/:?]
>>>          at
>>> org.apache.ofbiz.base.util.ObjectType.simpleTypeOrObjectConvert(ObjectType.java:256)
>>>
>>> [main/:?]
>>>          at
>>> org.apache.ofbiz.base.util.ObjectType.simpleTypeOrObjectConvert(ObjectType.java:375)
>>>
>>> [main/:?]
>>>          at
>>> org.apache.ofbiz.entity.GenericEntity.set(GenericEntity.java:550)
>>> [main/:?]
>>>          at
>>> org.apache.ofbiz.entity.GenericEntity.set(GenericEntity.java:502)
>>> [main/:?]
>>>          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> ~[?:1.8.0_202]
>>>          at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>>
>>> ~[?:1.8.0_202]
>>>          at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>
>>> ~[?:1.8.0_202]
>>>          at java.lang.reflect.Method.invoke(Method.java:498)
>>> ~[?:1.8.0_202]
>>>          at
>>> org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:101)
>>>
>>> [groovy-2.5.11.jar:2.5.11]
>>>          at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
>>> [groovy-2.5.11.jar:2.5.11]
>>>          at
>>> groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:2754)
>>> [groovy-2.5.11.jar:2.5.11]
>>>          at
>>> groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:3809)
>>> [groovy-2.5.11.jar:2.5.11]
>>>          at
>>> org.codehaus.groovy.runtime.InvokerHelper.setProperty(InvokerHelper.java:217)
>>>
>>> [groovy-2.5.11.jar:2.5.11]
>>>          at
>>> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.setProperty(ScriptBytecodeAdapter.java:496)
>>>
>>> [groovy-2.5.11.jar:2.5.11]
>>>          at
>>> DataServices.saveLocalFileDataResource(DataServices.groovy:280)
>>> [script:?]
>>>          at DataServices$saveLocalFileDataResource.callCurrent(Unknown
>>> Source) [script:?]
>>>          at
>>> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51)
>>>
>>> [groovy-2.5.11.jar:2.5.11]
>>>          at
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:156)
>>>
>>> [groovy-2.5.11.jar:2.5.11]
>>>          at
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:168)
>>>
>>> [groovy-2.5.11.jar:2.5.11]
>>>          at
>>> DataServices.attachUploadToDataResource(DataServices.groovy:191)
>>> [script:?]
>>> [...]
>>> 2021-02-13 10:17:03,507 |jsse-nio-8443-exec-8
>>> |ObjectType                    |I| No special conversion required for
>>> org.codehaus.groovy.runtime.GStringImpl to String, returning
>>> object.toString().
>>>
>>> To prevent this message, I propose to bypass GString to String
>>> conversion.
>>>
>>> What do you think?
>>>
>>> Jacques
>>>
Reply | Threaded
Open this post in threaded view
|

Re: GString to String

Jacques Le Roux
Administrator
There is none, because, as shown in the log below

    <<No special conversion required for org.codehaus.groovy.runtime.GStringImpl to String, returning object.toString(). >>

So it does the same thing, but prevents an useless error messages.

The change in ObjectType.java is simple:

-        if ("PlainString".equals(type)) {
+        if ("PlainString".equals(type)
+                || ("org.codehaus.groovy.runtime.GStringImpl".equals(obj.getClass().getName()) && "String".equals(type))) {
              return obj.toString();
          }

We can even suppress the Converters warning. It's a bit more complicated and I'm not sure it's needed (the case is quite obvious).

HTH

Jacques


Le 18/02/2021 à 17:51, Michael Brohl a écrit :

> What impact does this change have?
>
> Thanks,
>
> Michael
>
>
> Am 18.02.21 um 17:33 schrieb Jacques Le Roux:
>> Thanks Nicolas,
>>
>> Since nobody seems against I'll do so with https://issues.apache.org/jira/browse/OFBIZ-12182
>>
>> Jacques
>>
>> Le 15/02/2021 à 18:33, Nicolas Malin a écrit :
>>> I'm agree Jacques with that.
>>>
>>> Some time on specific customer code I was confronted to bad gstring
>>> conversion on groovy service because I forgot that "this ${code}" isn't
>>> a string in groovy !
>>>
>>> :)
>>>
>>> Nicolas
>>>
>>>
>>> On 13/02/2021 13:48, Jacques Le Roux wrote:
>>>> Hi,
>>>>
>>>> I spotted this error in log
>>>>
>>>> 2021-02-13 10:17:03,503 |jsse-nio-8443-exec-8
>>>> |Converters                    |W| *** No converter found, converting
>>>> from org.codehaus.groovy.runtime.GStringImpl to java.lang.String.
>>>> Please report this message to the developer community s
>>>> o a suitable converter can be created. ***
>>>> 2021-02-13 10:17:03,503 |jsse-nio-8443-exec-8
>>>> |ObjectType                    |E| null
>>>> java.lang.ClassNotFoundException: No converter found for
>>>> org.codehaus.groovy.runtime.GStringImpl->java.lang.String
>>>>          at
>>>> org.apache.ofbiz.base.conversion.Converters.getConverter(Converters.java:119)
>>>> ~[main/:?]
>>>>          at
>>>> org.apache.ofbiz.base.util.ObjectType.simpleTypeOrObjectConvert(ObjectType.java:328)
>>>> [main/:?]
>>>>          at
>>>> org.apache.ofbiz.base.util.ObjectType.simpleTypeOrObjectConvert(ObjectType.java:256)
>>>> [main/:?]
>>>>          at
>>>> org.apache.ofbiz.base.util.ObjectType.simpleTypeOrObjectConvert(ObjectType.java:375)
>>>> [main/:?]
>>>>          at
>>>> org.apache.ofbiz.entity.GenericEntity.set(GenericEntity.java:550)
>>>> [main/:?]
>>>>          at
>>>> org.apache.ofbiz.entity.GenericEntity.set(GenericEntity.java:502)
>>>> [main/:?]
>>>>          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> ~[?:1.8.0_202]
>>>>          at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>>> ~[?:1.8.0_202]
>>>>          at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>> ~[?:1.8.0_202]
>>>>          at java.lang.reflect.Method.invoke(Method.java:498)
>>>> ~[?:1.8.0_202]
>>>>          at
>>>> org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:101)
>>>> [groovy-2.5.11.jar:2.5.11]
>>>>          at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
>>>> [groovy-2.5.11.jar:2.5.11]
>>>>          at
>>>> groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:2754)
>>>> [groovy-2.5.11.jar:2.5.11]
>>>>          at
>>>> groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:3809)
>>>> [groovy-2.5.11.jar:2.5.11]
>>>>          at
>>>> org.codehaus.groovy.runtime.InvokerHelper.setProperty(InvokerHelper.java:217)
>>>> [groovy-2.5.11.jar:2.5.11]
>>>>          at
>>>> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.setProperty(ScriptBytecodeAdapter.java:496)
>>>> [groovy-2.5.11.jar:2.5.11]
>>>>          at
>>>> DataServices.saveLocalFileDataResource(DataServices.groovy:280)
>>>> [script:?]
>>>>          at DataServices$saveLocalFileDataResource.callCurrent(Unknown
>>>> Source) [script:?]
>>>>          at
>>>> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51)
>>>> [groovy-2.5.11.jar:2.5.11]
>>>>          at
>>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:156)
>>>> [groovy-2.5.11.jar:2.5.11]
>>>>          at
>>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:168)
>>>> [groovy-2.5.11.jar:2.5.11]
>>>>          at
>>>> DataServices.attachUploadToDataResource(DataServices.groovy:191)
>>>> [script:?]
>>>> [...]
>>>> 2021-02-13 10:17:03,507 |jsse-nio-8443-exec-8
>>>> |ObjectType                    |I| No special conversion required for
>>>> org.codehaus.groovy.runtime.GStringImpl to String, returning
>>>> object.toString().
>>>>
>>>> To prevent this message, I propose to bypass GString to String
>>>> conversion.
>>>>
>>>> What do you think?
>>>>
>>>> Jacques
>>>>
Reply | Threaded
Open this post in threaded view
|

Re: GString to String

Michael Brohl-3
Ok, +1 from my side then.

Thanks Jacques and Nicolas,

Michael Brohl

ecomify GmbH - www.ecomify.de


Am 18.02.21 um 22:07 schrieb Jacques Le Roux:

> There is none, because, as shown in the log below
>
>    <<No special conversion required for
> org.codehaus.groovy.runtime.GStringImpl to String, returning
> object.toString(). >>
>
> So it does the same thing, but prevents an useless error messages.
>
> The change in ObjectType.java is simple:
>
> -        if ("PlainString".equals(type)) {
> +        if ("PlainString".equals(type)
> +                ||
> ("org.codehaus.groovy.runtime.GStringImpl".equals(obj.getClass().getName())
> && "String".equals(type))) {
>              return obj.toString();
>          }
>
> We can even suppress the Converters warning. It's a bit more
> complicated and I'm not sure it's needed (the case is quite obvious).
>
> HTH
>
> Jacques
>
>
> Le 18/02/2021 à 17:51, Michael Brohl a écrit :
>> What impact does this change have?
>>
>> Thanks,
>>
>> Michael
>>
>>
>> Am 18.02.21 um 17:33 schrieb Jacques Le Roux:
>>> Thanks Nicolas,
>>>
>>> Since nobody seems against I'll do so with
>>> https://issues.apache.org/jira/browse/OFBIZ-12182
>>>
>>> Jacques
>>>
>>> Le 15/02/2021 à 18:33, Nicolas Malin a écrit :
>>>> I'm agree Jacques with that.
>>>>
>>>> Some time on specific customer code I was confronted to bad gstring
>>>> conversion on groovy service because I forgot that "this ${code}"
>>>> isn't
>>>> a string in groovy !
>>>>
>>>> :)
>>>>
>>>> Nicolas
>>>>
>>>>
>>>> On 13/02/2021 13:48, Jacques Le Roux wrote:
>>>>> Hi,
>>>>>
>>>>> I spotted this error in log
>>>>>
>>>>> 2021-02-13 10:17:03,503 |jsse-nio-8443-exec-8
>>>>> |Converters                    |W| *** No converter found, converting
>>>>> from org.codehaus.groovy.runtime.GStringImpl to java.lang.String.
>>>>> Please report this message to the developer community s
>>>>> o a suitable converter can be created. ***
>>>>> 2021-02-13 10:17:03,503 |jsse-nio-8443-exec-8
>>>>> |ObjectType                    |E| null
>>>>> java.lang.ClassNotFoundException: No converter found for
>>>>> org.codehaus.groovy.runtime.GStringImpl->java.lang.String
>>>>>          at
>>>>> org.apache.ofbiz.base.conversion.Converters.getConverter(Converters.java:119)
>>>>>
>>>>> ~[main/:?]
>>>>>          at
>>>>> org.apache.ofbiz.base.util.ObjectType.simpleTypeOrObjectConvert(ObjectType.java:328)
>>>>>
>>>>> [main/:?]
>>>>>          at
>>>>> org.apache.ofbiz.base.util.ObjectType.simpleTypeOrObjectConvert(ObjectType.java:256)
>>>>>
>>>>> [main/:?]
>>>>>          at
>>>>> org.apache.ofbiz.base.util.ObjectType.simpleTypeOrObjectConvert(ObjectType.java:375)
>>>>>
>>>>> [main/:?]
>>>>>          at
>>>>> org.apache.ofbiz.entity.GenericEntity.set(GenericEntity.java:550)
>>>>> [main/:?]
>>>>>          at
>>>>> org.apache.ofbiz.entity.GenericEntity.set(GenericEntity.java:502)
>>>>> [main/:?]
>>>>>          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>>>>> Method)
>>>>> ~[?:1.8.0_202]
>>>>>          at
>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>>>>
>>>>> ~[?:1.8.0_202]
>>>>>          at
>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>>>
>>>>> ~[?:1.8.0_202]
>>>>>          at java.lang.reflect.Method.invoke(Method.java:498)
>>>>> ~[?:1.8.0_202]
>>>>>          at
>>>>> org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:101)
>>>>>
>>>>> [groovy-2.5.11.jar:2.5.11]
>>>>>          at
>>>>> groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
>>>>> [groovy-2.5.11.jar:2.5.11]
>>>>>          at
>>>>> groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:2754)
>>>>> [groovy-2.5.11.jar:2.5.11]
>>>>>          at
>>>>> groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:3809)
>>>>> [groovy-2.5.11.jar:2.5.11]
>>>>>          at
>>>>> org.codehaus.groovy.runtime.InvokerHelper.setProperty(InvokerHelper.java:217)
>>>>>
>>>>> [groovy-2.5.11.jar:2.5.11]
>>>>>          at
>>>>> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.setProperty(ScriptBytecodeAdapter.java:496)
>>>>>
>>>>> [groovy-2.5.11.jar:2.5.11]
>>>>>          at
>>>>> DataServices.saveLocalFileDataResource(DataServices.groovy:280)
>>>>> [script:?]
>>>>>          at
>>>>> DataServices$saveLocalFileDataResource.callCurrent(Unknown
>>>>> Source) [script:?]
>>>>>          at
>>>>> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51)
>>>>>
>>>>> [groovy-2.5.11.jar:2.5.11]
>>>>>          at
>>>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:156)
>>>>>
>>>>> [groovy-2.5.11.jar:2.5.11]
>>>>>          at
>>>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:168)
>>>>>
>>>>> [groovy-2.5.11.jar:2.5.11]
>>>>>          at
>>>>> DataServices.attachUploadToDataResource(DataServices.groovy:191)
>>>>> [script:?]
>>>>> [...]
>>>>> 2021-02-13 10:17:03,507 |jsse-nio-8443-exec-8
>>>>> |ObjectType                    |I| No special conversion required for
>>>>> org.codehaus.groovy.runtime.GStringImpl to String, returning
>>>>> object.toString().
>>>>>
>>>>> To prevent this message, I propose to bypass GString to String
>>>>> conversion.
>>>>>
>>>>> What do you think?
>>>>>
>>>>> Jacques
>>>>>
>