google-code-export / gwt-test-utils

Automatically exported from code.google.com/p/gwt-test-utils
1 stars 0 forks source link

GwtReflectionUtils.callPrivateMethod with boolean parameter #98

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Hello Gael,

just stumbled over a small bug in the GwtReflectionUtils.

If i try to call a Method with a boolean Parameter it is not found, because the 
Parameter is auto boxed into a Boolean.

I tried the following:

  GwtReflectionUtils.callPrivateMethod(ctv, "contractReloaded", true);

and contractReloaded looks like this:

private void contractReloaded( boolean success )
{
   ......
}          

Which led to a 'Method not found' Exception.

By the way. I had some trouble to catch up with your recent code changes to the 
0.35-SNAPSHOT because you changed the interface of the  UiBinderWidgetFactory 
and the UiBinderWidget.

Before we step into a 'mass' production of tests it would be perfect to get a 
version with a 'almost' stable interface. Can we expect this in the next time ?

Thx

Jürgen

Original issue reported on code.google.com by juergen....@gmail.com on 29 Nov 2011 at 11:07

GoogleCodeExporter commented 9 years ago
Thanks for your report.

I'm sorry for the interface changes, I knew it would impact you but I had no 
choice :(
There are some other changes I will make on those classes (probably tonight) so 
that UiBinderTag implementation (UiBinderWidget, etc) would be responsible for 
the wrapped object instanciation.
Currently, it is the UiBinderInstanciator class which is in charge of every 
widget instanciation, but its design is crappy and centralize both 
instanciation and population of Widget/Element in UiBinderTag really makes 
sense.

I will release the 0.35 after this refactoring, so the interface should be 
stable at this point.
Of course, I'll fix this issue and a patch will be embedded in the release.

Again, I apologize for the impact it involves for you.. :(

Original comment by gael.laz...@gmail.com on 29 Nov 2011 at 11:35

GoogleCodeExporter commented 9 years ago
The GwtReflectionUtils.callPrivateMethod method has been fixed to work with all 
primitive types and its available in the lastest 0.35-SNAPSHOT I've deployed.

But the UiBinderInstanciator refactoring is not yet finished, so you'll have 
other impacts when it will be finished.. (before this sunday).

I'll notice you of its availibity asap.

Cheers

Original comment by gael.laz...@gmail.com on 1 Dec 2011 at 6:44

GoogleCodeExporter commented 9 years ago
Hi Juergen,

The gwt-test-utils UiBinder API refactor is now finished, I think the API is 
now flexible and clean enough to be able to say it won't change anymore.

Again, I'm sorry it will involves some effort for you to get your work on 
gxt-uibinder support compatible with the new API... But at the same time, I 
feel lucky to have an early adopter to give me feedback about it...
Feel free to ask any question you want, I'd answer as fast as I can.
I would like to release the 0.35 version at the end of the week, so you'd be 
welcome to help me to perfect it if necassary in the next couple of days.

Cheers

Original comment by gael.laz...@gmail.com on 7 Dec 2011 at 3:20

GoogleCodeExporter commented 9 years ago
Hi again,

I'm sorry but I was to fast : the public API will be modified again :(
Actually, there is an issue with UiBinder and MenuBar 
(http://code.google.com/p/gwt-test-utils/issues/detail?id=101) which requiers 
some changes to be able to deal with UIObject that doesn't implements the 
IsWidget interface (MenuItem in this case).

I'll let you know when the refactor will be completed.

Cheers

Original comment by gael.laz...@gmail.com on 8 Dec 2011 at 1:25

GoogleCodeExporter commented 9 years ago
The API is not stable on trunk : it handles both IsWidget implementation and 
UIObject subclasses which does not implement IsWidget (MenuItem for example).
You could now switch to this new API without any fear of change ;)

Cheers

Original comment by gael.laz...@gmail.com on 10 Dec 2011 at 12:18

GoogleCodeExporter commented 9 years ago
And of course, I'm waiting for your feedback on the 
GwtReflectionUtils.callPrivateMethod fix ;)

Original comment by gael.laz...@gmail.com on 10 Dec 2011 at 5:09

GoogleCodeExporter commented 9 years ago

Original comment by gael.laz...@gmail.com on 11 Dec 2011 at 5:41

GoogleCodeExporter commented 9 years ago
Hello Gael,

sorry but I was a little bit under pressure the last two weeks.

Your GwtReflectionUtils.callPrivateMethod works fine. On Thursday I worked in 
your changes, to early ;-) as it looks.

Keep on running,

Jürgen

Original comment by juergen....@gmail.com on 12 Dec 2011 at 8:17

GoogleCodeExporter commented 9 years ago
I'm sorry you worked for almost nothing :(
Thanks for your feedback, I would appreciate feedback on the new UiBinder 
support API you're using. Is it easy to understand and to extend ?

Original comment by gael.laz...@gmail.com on 12 Dec 2011 at 8:31

GoogleCodeExporter commented 9 years ago
Hello Gael,

I've just applied my code to your latest (and hopefully last :-)) changes.
Here's my feedback. 
I'm happy with the way Widgets (Objects) are created. That's fine. There are 
two things I don't understand. 

1) due to the fact the UIObjectTagFactory is generic you will need a own 
factory for every widget. Is this really necessary ?

2) Your'e handling bean converters for the GXT layouts in the static part of 
GxtUiBinderCreateHandler. I didn't see any other way to add my own converts in 
replacing the GxtUiBinderCreateHandler through my own class. Is there another 
way to do this ?

Thx and keep on running

Jürgen

Original comment by juergen....@gmail.com on 13 Dec 2011 at 8:03

GoogleCodeExporter commented 9 years ago
1) No, creating a UIObjectTagFactory implementation for each widget is not 
necessary, but I thought it was prettier since the TagFactory mechanism 
implements the Chain of Responsability pattern : The DefaultUiWidgetTagFactory 
(http://code.google.com/p/gwt-test-utils/source/browse/src/framework/trunk/gwt-t
est-utils/src/main/java/com/octo/gwt/test/uibinder/DefaultUiWidgetTagFactory.jav
a) will check for each UIObjectTagFactory to create a UITag for a specific 
Class (will iterate since a factory returns a not-null object).

Technically, you could of course implements only one factory and one 
UIObjectTag which would handle every Class you need to support gxt-uibinder, 
but I'm not sure those classes would be easy to read (to many 'if 
XXX.class.isAssignableTo(clazz)').

Original comment by gael.laz...@gmail.com on 13 Dec 2011 at 9:55

GoogleCodeExporter commented 9 years ago
Hello Gael,

I've just stumbled upon a strange problem. I have a test that run's find in 
Eclipse but fails when running it via maven.

The Problem is, that I get the following exception:

Caused by: com.octo.gwt.test.exceptions.GwtTestUiBinderException: GXT Layout 
not managed yet : 'FormLayout'
        at com.octo.gxt.test.handlers.GxtUiBinderCreateHandler$1.convert(GxtUiBinderCreateHandler.java:33)

I thought that I've worked around that by using my own GxtUiBinderCreateHandler 
to register some more conversions for the class 'Layout' as I wrote in my post 
before. But it seems that using maven the converter for Layout is already 
registered an my new one is not taken anymore.

Do you have any idea how to work around this ?

Thx

Jürgen

Original comment by juergen....@gmail.com on 15 Dec 2011 at 4:06