Originally posted in gwt-users.

The question here is the same with the previous one.

Is this considered a bug? Should I report it as an issue? and if so where?

 Thanks.


---------- Forwarded message ----------
From: Vassilis Virvilis <[email protected]>
Date: Fri, Feb 24, 2017 at 2:44 PM
Subject: jsinterop woes: Part 2: return Double[]
To: [email protected]


Hi,

I am not sure if it is a bug but it kills my beautiful jsinterop mappings.

Let's say that I have a native js function (d3.extent) that returns an
array of something. It may be dates it may be doubles..

This is mapped nicely with

    public static native <T, V> V[] extent(T[] data,
>             AccessorFunction<T, V> accessor);
>

Where AccessorFunction is

    @JsFunction
>     public static interface AccessorFunction<T, V> {
>         public V get(T d);
>     }
>

The above scheme works for Date and other objects but it fails with Double.
If I specify another variant of d3.extent that returns double[] it works

Here is the javascript exception

Uncaught Error: java.lang.ClassCastException
>     at java_lang_ClassCastException_ClassCastException__V.java_
> lang_Throwable_createError__Ljava_lang_String_2Ljava_lang_Object_2 [as
> package_private$java_lang$createError__Ljava_lang_String_2Ljava_lang_Object_2]
> (dashboard-0.js:7245)
>     at java_lang_ClassCastException_ClassCastException__V.java_
> lang_Throwable_initializeBackingError__V [as 
> private$java_lang_Throwable$initializeBackingError__V]
> (dashboard-0.js:7300)
>     at 
> java_lang_ClassCastException_ClassCastException__V.java_lang_Throwable_Throwable__V
> (dashboard-0.js:7133)
>     at 
> java_lang_ClassCastException_ClassCastException__V.java_lang_Exception_Exception__V
> (dashboard-0.js:7381)
>     at java_lang_ClassCastException_ClassCastException__V.java_
> lang_RuntimeException_RuntimeException__V (dashboard-0.js:29760)
>     at java_lang_ClassCastException_ClassCastException__V
> (dashboard-0.js:57310)
>     at javaemul_internal_InternalPreconditions_checkCriticalType__ZV
> (dashboard-0.js:72171)
>     at javaemul_internal_InternalPreconditions_checkType__ZV
> (dashboard-0.js:72378)
>     at com_google_gwt_lang_Cast_castTo__Ljava_lang_Object_
> 2Lcom_google_gwt_core_client_JavaScriptObject_2Ljava_lang_Object_2
> (dashboard-0.js:647)
>

It goes here

> function com_google_gwt_lang_Cast_castTo__Ljava_lang_Object_
> 2Lcom_google_gwt_core_client_JavaScriptObject_2Ljava_lang_Object_2(src_0,
> dstId){
>   com_google_gwt_lang_Cast_$clinit__V();
>   javaemul_internal_InternalPreconditions_checkType__ZV(com_google_gwt_
> lang_Cast_jsEquals__Ljava_lang_Object_2Ljava_lang_Object_2Z(src_0, null)
> || com_google_gwt_lang_Cast_canCast__Ljava_lang_Object_
> 2Lcom_google_gwt_core_client_JavaScriptObject_2Z(src_0, dstId));
>   return src_0;
> }
>

Arguments:

   - src_0:
      - evaluated: js array of numbers as it should be
      - dstId:
      - evaluated: 2396

and then it goes to

function com_google_gwt_lang_Cast_canCast__Ljava_lang_Object_
> 2Lcom_google_gwt_core_client_JavaScriptObject_2Z(src_0, dstId){
>   com_google_gwt_lang_Cast_$clinit__V();
>   if (com_google_gwt_lang_Cast_instanceOfString__Ljava_lang_Object_2Z(src_0))
> {
>     return !!com_google_gwt_lang_Cast_stringCastMap[dstId];
>   }
>    else if (src_0.java_lang_Object_castableTypeMap) {
>     return !!src_0.java_lang_Object_castableTypeMap[dstId];
>   }
>    else if 
> (com_google_gwt_lang_Cast_instanceOfDouble__Ljava_lang_Object_2Z(src_0))
> {
>     return !!com_google_gwt_lang_Cast_doubleCastMap[dstId];
>   }
>    else if 
> (com_google_gwt_lang_Cast_instanceOfBoolean__Ljava_lang_Object_2Z(src_0))
> {
>     return !!com_google_gwt_lang_Cast_booleanCastMap[dstId];
>   }
>   return false;
> }
>

where it fails.

Would it be possible to handle transparently also Double[] (and possibly
String[])? as double[]?

   Thank you for reading that far...

Vassilis







-- 
Vassilis Virvilis



-- 
Vassilis Virvilis

-- 
You received this message because you are subscribed to the Google Groups "GWT 
Contributors" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAKbOjEzUf3LAK90Gnq%2B8B5Yzq7akyZPC%3DJ9ch1DFieqoOCJJVA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to