If you have a JsInterop object that returns an []
you can do:
Object o = jsInteropObject.method(); //this in declared as "public Object
method();" in your @JsType object
JsArray<JavaScriptObject> array = JsInteropHelper.cast(o);
On 18/05/16 11:38, Vassilis Virvilis wrote:
> Hi
>
> @Pablo, I don't see how the example you gave relates to arrays and jsinterop
>
> @Thomas
> I am not exactly sure about but looks like that String[] is an array of char
> arrays instead of native javascript Strings. For example this also works.
>
>
> config.buttons = new JsString[] {Util.getString("copyHtml5")};
>
> Where JsString and Util.getString are:
>
> @JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "String")
> public static interface JsString {
> }
>
> public static native JsString getString(String string) /*-{
> var l = string.length;
> var s = "";
> for (var i = 0; i < l; i++) {
> s += string[i];
> }
> return s;
> }-*/;
>
> Thanks in advance.
>
>
>
>
>
> On Thu, May 12, 2016 at 2:46 PM, Pablo Nussembaum <[email protected]
> <mailto:[email protected]>> wrote:
>
> Hi Vassilis,
> I have been using JsInterop for managing IndexedDB stores and I have
> created this [1] helper class for casting back and forth js to java. The main
> issue is that in GWT there are two Object
> hiearchies one from java and js, GWT makes are really job hiding that
> detail, but with JsInterop the difference leaks ;-)
>
> [1]
> https://github.com/bauna/gwt-indexeddb/blob/devel/gwt-indexeddb-core/src/main/java/org/nuvola/indexeddb/client/JsInteropHelper.java
>
> Let me know if want examples where I'm using this helper class.
>
> Regards,
> --
> Pablo
>
>
> On 12/05/16 07:43, Vassilis Virvilis wrote:
>> Thanks for all the answers
>>
>> The Collection#toArray does not work in my case because dataTables.net
>> are a bit sensitive in the input. It stumbles upon java.lang stuff later on.
>> Here
>>
>> buttons = new String[] {"copyHtml5"};
>>
>> while buttons2 is the correct one created with your previous suggestion.
>>
>> 1. buttons:
>> 1. 0:"copyHtml5"
>> 2. __elementTypeCategory$:6
>> 3. __elementTypeId$:2
>> 4. java_lang_Object__1_1_1clazz:java_lang_Class_Class__V
>> 5. java_lang_Object_castableTypeMap:Object
>> 6.
>> java_lang_Object_typeMarker:com_google_gwt_lang_Runtime_typeMarkerFn__V()
>> 7. length:1
>> 8. __proto__:Array[0]
>> 2. buttons2:Array[1]
>> 1. 0:"copyHtml5"
>> 2. length:1
>> 3. __proto__:Array[0]
>>
>> About Array vs []
>> I am not js expert and looking for the difference I hit this
>> http://stackoverflow.com/questions/931872/what-s-the-difference-between-array-and-while-declaring-a-javascript-ar
>> Check this answer
>> http://stackoverflow.com/questions/931872/what-s-the-difference-between-array-and-while-declaring-a-javascript-ar/1273936#1273936
>>
>> So I though if that could work with GWT and I tried it.
>>
>> Also thanks for the link I bookmarked it.
>>
>>
>> On Thu, May 12, 2016 at 1:20 PM, Thomas Broyer <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>>
>>
>> On Thursday, May 12, 2016 at 11:51:11 AM UTC+2, Vassilis Virvilis
>> wrote:
>>
>> Thomas thanks,
>>
>> Wow I did this and it works. But it is crazy. Cr is for crazy.
>> Kudos to jsinterop guys though.
>>
>> @JsType(isNative = true, namespace = JsPackage.GLOBAL, name
>> = "[]")
>>
>>
>> You should probably use "Array" rather than "[]"
>>
>>
>> public interface CrJsArray<T> {
>>
>> public void push(T value);
>>
>> @JsProperty
>> public int getLength();
>> }
>>
>>
>> I tried your suggestion to cast and __also works__ (eclipse
>> complains about but with (JavaScriptObject) (Object) my_native_object) it
>> works and it is definitely better.
>>
>>
>> Also, for converting from a java.util.Collection to an array, how
>> about simply using Collection#toArray? (and then passing the array to JS
>> through JsInterop)
>>
>>
>> Questions
>> 1) Is JavaScriptObject scheduled for deprecation?
>>
>>
>> Yes, it'll be replaced with JsInterop.
>>
>>
>> 2) Should a native type be able to extend JavascriptObject.
>> Because right now (2.8pre1) fails at run time. That would make casting a bit
>> saner. Should I report it somewhere?
>>
>>
>> This is probably on-purpose.
>>
>>
>> I tried to look for the reference you gave but I didn't find it.
>> Wrong keywords maybe...
>>
>>
>> I found this:
>> https://groups.google.com/d/topic/google-web-toolkit/nmBAOX4vcSo/discussion
>> Not exactly what I remembered, but touches similar points.
>>
>>
>>
>> On Thu, May 12, 2016 at 12:20 PM, Thomas Broyer
>> <[email protected] <mailto:[email protected]>> wrote:
>>
>> That question came up already in the forum or in GWT-Contrib
>> (try to search the archive), and I seem to recall that Goktug said you could
>> cast @JsType(isNative=true) objects to/from
>> JavaScriptObject, so you could use JsArray (and
>> JsonUtils.safeEval). I think you can also cast to/from an array of
>> @JsType(isNative=true), so if you don't need to alter the size of
>> the JS array you can then use the bracket operators on a
>> Java array (and cast from/to a JavaScriptObject).
>> This is only out of memory, please double check from the
>> forum archives.
>>
>>
>> On Thursday, May 12, 2016 at 10:47:51 AM UTC+2, Vassilis
>> Virvilis wrote:
>>
>> Hi again,
>>
>> I am trying to convert a jre collection or build a
>> jsArray with a isNative=true type.
>>
>> Unfortunately this is not possible because JsArray
>> requires JavascriptObject which is invcompatible (complie time error) with
>> native classes.
>>
>> Any ideas?
>>
>> I looked on deep dive jsinterop from Ray Cromwell and it
>> says that there is not a clean way for jsinterop1 to align collections. Ok I
>> get that - but there must be a way even if
>> not the nicest/cleanest one.
>>
>> Otherwise looks like I have to create my own
>> @jsinteroped MyJsArray which looks wrong.
>>
>> --
>> Vassilis Virvilis
>>
>> --
>> You received this message because you are subscribed to the
>> Google Groups "GWT Users" group.
>> To unsubscribe from this group and stop receiving emails
>> from it, send an email to [email protected]
>> <mailto:[email protected]>.
>> To post to this group, send email to
>> [email protected]
>> <mailto:[email protected]>.
>> Visit this group at
>> https://groups.google.com/group/google-web-toolkit.
>> For more options, visit https://groups.google.com/d/optout.
>>
>>
>>
>>
>> --
>> Vassilis Virvilis
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "GWT Users" group.
>> To unsubscribe from this group and stop receiving emails from it,
>> send an email to [email protected]
>> <mailto:[email protected]>.
>> To post to this group, send email to
>> [email protected]
>> <mailto:[email protected]>.
>> Visit this group at
>> https://groups.google.com/group/google-web-toolkit.
>> For more options, visit https://groups.google.com/d/optout.
>>
>>
>>
>>
>> --
>> Vassilis Virvilis
>> --
>> You received this message because you are subscribed to the Google
>> Groups "GWT Users" group.
>> To unsubscribe from this group and stop receiving emails from it, send
>> an email to [email protected]
>> <mailto:[email protected]>.
>> To post to this group, send email to [email protected]
>> <mailto:[email protected]>.
>> Visit this group at https://groups.google.com/group/google-web-toolkit.
>> For more options, visit https://groups.google.com/d/optout.
>
> --
> You received this message because you are subscribed to the Google Groups
> "GWT Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected]
> <mailto:[email protected]>.
> To post to this group, send email to [email protected]
> <mailto:[email protected]>.
> Visit this group at https://groups.google.com/group/google-web-toolkit.
> For more options, visit https://groups.google.com/d/optout.
>
>
>
>
> --
> Vassilis Virvilis
> --
> You received this message because you are subscribed to the Google Groups
> "GWT Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected]
> <mailto:[email protected]>.
> To post to this group, send email to [email protected]
> <mailto:[email protected]>.
> Visit this group at https://groups.google.com/group/google-web-toolkit.
> For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "GWT
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.