You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Wilson Velez <wi...@gmail.com> on 2021/04/19 22:30:04 UTC

Question about JSONObject in versions 5.6.2, 5.6.3. and 5.6.4

There is a weird behavior with the tags 5.6.2, 5.6.3. and 5.6.4, I don't
know if this is expected.

I'm having a problem trying to upgrade from 5.6.1. When I change the
version to 5.6.2, 5.6.3. or 5.6.4
the org.got5.tapestry5.jquery.utils.JQueryUtils#merge method throws the
exception:

java.lang.NoSuchMethodError
org.apache.tapestry5.json.JSONObject.get(Ljava/lang/String;)Ljava/lang/Object;

and clearly the method with that signature doesn't exist anymore, that's
fine, I can understand that and probably I'm not going to be able to go
beyond this point in the upgrade.

However when I go to to
https://github.com/apache/tapestry-5/blob/5.6.4/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONObject.java
to see the new source code I see comments referencing the 5.7 version.

Is that expected being in the 5.6.x?

Re: Question about JSONObject in versions 5.6.2, 5.6.3. and 5.6.4

Posted by Wilson Velez <wi...@gmail.com>.
Thanks for your answers !

I will stay in 5.6.1 until I finish the upgrade of the application
completely, then we will evaluate if we can remove tapestry-jquery
completely doing the bridge ourselves for the used jquery components.

Thanks again.

On Tue, Apr 20, 2021 at 3:21 AM Dmitry Gusev <dm...@gmail.com> wrote:

> Hi,
>
> In addition to what Ben said, there's an open PR in tapestry-jquery that
> fixes 5.6.2+ compatibility:
>
> https://github.com/got5/tapestry5-jquery/pull/394
>
> Not yet merged, but you may release from your own fork if it's really
> necessary.
>
> On Tue, Apr 20, 2021 at 7:07 AM Ben Weidig <be...@netzgut.net> wrote:
>
> > Hi,
> >
> > it's a known problem with 5.6.2+ and JSONObject that came to light
> > recently.
> >
> > An updated version of tapestry-json improvements were introduced with
> > 5.7.0, but got backported to 5.6.2.
> >
> > JSONObject is now a full-fledged Map<String, Object>, which lead to a
> > signature change being introduced. It slipped through into the backport,
> > resulting in the NoSuchMethodError for any dependency being compiled
> with <
> > 5.6.2.
> >
> > Due to the generic-nature of Map and Java's type erasure, the old methods
> > can't be retro-fitted in an update.
> >
> > The are the possible workarounds I can think of:
> >
> > - Update the dependency to a newer version using 5.6.2+.
> >
> > - Shade the dependency and make the changes yourself
> >
> > - Stay on 5.6.1 until the dependency is updated
> >
> >
> > I'm in the process of updating the documentation/release notes, so it's
> > clearer what the problem is.
> >
> > Ben
> >
> > On Tue, Apr 20, 2021 at 12:30 AM Wilson Velez <
> wilsonvelezvargas@gmail.com
> > >
> > wrote:
> >
> > > There is a weird behavior with the tags 5.6.2, 5.6.3. and 5.6.4, I
> don't
> > > know if this is expected.
> > >
> > > I'm having a problem trying to upgrade from 5.6.1. When I change the
> > > version to 5.6.2, 5.6.3. or 5.6.4
> > > the org.got5.tapestry5.jquery.utils.JQueryUtils#merge method throws the
> > > exception:
> > >
> > > java.lang.NoSuchMethodError
> > >
> > >
> >
> org.apache.tapestry5.json.JSONObject.get(Ljava/lang/String;)Ljava/lang/Object;
> > >
> > > and clearly the method with that signature doesn't exist anymore,
> that's
> > > fine, I can understand that and probably I'm not going to be able to go
> > > beyond this point in the upgrade.
> > >
> > > However when I go to to
> > >
> > >
> >
> https://github.com/apache/tapestry-5/blob/5.6.4/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONObject.java
> > > to see the new source code I see comments referencing the 5.7 version.
> > >
> > > Is that expected being in the 5.6.x?
> > >
> >
>
>
> --
> Dmitry Gusev
>
> AnjLab Team
> http://anjlab.com
>

Re: Question about JSONObject in versions 5.6.2, 5.6.3. and 5.6.4

Posted by Dmitry Gusev <dm...@gmail.com>.
Hi,

In addition to what Ben said, there's an open PR in tapestry-jquery that
fixes 5.6.2+ compatibility:

https://github.com/got5/tapestry5-jquery/pull/394

Not yet merged, but you may release from your own fork if it's really
necessary.

On Tue, Apr 20, 2021 at 7:07 AM Ben Weidig <be...@netzgut.net> wrote:

> Hi,
>
> it's a known problem with 5.6.2+ and JSONObject that came to light
> recently.
>
> An updated version of tapestry-json improvements were introduced with
> 5.7.0, but got backported to 5.6.2.
>
> JSONObject is now a full-fledged Map<String, Object>, which lead to a
> signature change being introduced. It slipped through into the backport,
> resulting in the NoSuchMethodError for any dependency being compiled with <
> 5.6.2.
>
> Due to the generic-nature of Map and Java's type erasure, the old methods
> can't be retro-fitted in an update.
>
> The are the possible workarounds I can think of:
>
> - Update the dependency to a newer version using 5.6.2+.
>
> - Shade the dependency and make the changes yourself
>
> - Stay on 5.6.1 until the dependency is updated
>
>
> I'm in the process of updating the documentation/release notes, so it's
> clearer what the problem is.
>
> Ben
>
> On Tue, Apr 20, 2021 at 12:30 AM Wilson Velez <wilsonvelezvargas@gmail.com
> >
> wrote:
>
> > There is a weird behavior with the tags 5.6.2, 5.6.3. and 5.6.4, I don't
> > know if this is expected.
> >
> > I'm having a problem trying to upgrade from 5.6.1. When I change the
> > version to 5.6.2, 5.6.3. or 5.6.4
> > the org.got5.tapestry5.jquery.utils.JQueryUtils#merge method throws the
> > exception:
> >
> > java.lang.NoSuchMethodError
> >
> >
> org.apache.tapestry5.json.JSONObject.get(Ljava/lang/String;)Ljava/lang/Object;
> >
> > and clearly the method with that signature doesn't exist anymore, that's
> > fine, I can understand that and probably I'm not going to be able to go
> > beyond this point in the upgrade.
> >
> > However when I go to to
> >
> >
> https://github.com/apache/tapestry-5/blob/5.6.4/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONObject.java
> > to see the new source code I see comments referencing the 5.7 version.
> >
> > Is that expected being in the 5.6.x?
> >
>


-- 
Dmitry Gusev

AnjLab Team
http://anjlab.com

Re: Question about JSONObject in versions 5.6.2, 5.6.3. and 5.6.4

Posted by Ben Weidig <be...@netzgut.net>.
Hi,

it's a known problem with 5.6.2+ and JSONObject that came to light recently.

An updated version of tapestry-json improvements were introduced with
5.7.0, but got backported to 5.6.2.

JSONObject is now a full-fledged Map<String, Object>, which lead to a
signature change being introduced. It slipped through into the backport,
resulting in the NoSuchMethodError for any dependency being compiled with <
5.6.2.

Due to the generic-nature of Map and Java's type erasure, the old methods
can't be retro-fitted in an update.

The are the possible workarounds I can think of:

- Update the dependency to a newer version using 5.6.2+.

- Shade the dependency and make the changes yourself

- Stay on 5.6.1 until the dependency is updated


I'm in the process of updating the documentation/release notes, so it's
clearer what the problem is.

Ben

On Tue, Apr 20, 2021 at 12:30 AM Wilson Velez <wi...@gmail.com>
wrote:

> There is a weird behavior with the tags 5.6.2, 5.6.3. and 5.6.4, I don't
> know if this is expected.
>
> I'm having a problem trying to upgrade from 5.6.1. When I change the
> version to 5.6.2, 5.6.3. or 5.6.4
> the org.got5.tapestry5.jquery.utils.JQueryUtils#merge method throws the
> exception:
>
> java.lang.NoSuchMethodError
>
> org.apache.tapestry5.json.JSONObject.get(Ljava/lang/String;)Ljava/lang/Object;
>
> and clearly the method with that signature doesn't exist anymore, that's
> fine, I can understand that and probably I'm not going to be able to go
> beyond this point in the upgrade.
>
> However when I go to to
>
> https://github.com/apache/tapestry-5/blob/5.6.4/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONObject.java
> to see the new source code I see comments referencing the 5.7 version.
>
> Is that expected being in the 5.6.x?
>