On Fri, Dec 11, 2020 at 10:32 PM Dmitry Gusev <dmitry.gu...@gmail.com>
wrote:

> Hi Thiago,
>

Hello!


> This release has a significant change in packages, none of the existing
> 3rd-party tapestry libraries will be compatible with this release -- they
> all will need recompilation and mentioned fixes, even if they don't use
> Java 9 modules.
>

Indeed. I ran into this problem with tapestry-geb.


> So it is a major change according to semver.
> Have you considered bumping the major version to 6.x?
>

For historical reasons, no. We've promised in the past there wouldn't be a
Tapestry 6, since Tapestry 5 is a complete rewrite and completely
incompatible with Tapestry 4, and other past versions are in the same
situation. Tapestry had an image of a framework that rewrites itself after
a few years and one major version. So, actually, 5.7.0 will actually be
version 7.0 of the Tapestry 5 framework. This mass moving of classes won't
need to happen again, so I think having 6 as the major version isn't
necessary.


> Also if we're doing this change, maybe flatten existing interfaces left
> from previous releases, like Asset2, ServiceDef2, ServiceDef3, etc.?
>

I thought about that too, but didn't implement it. Good idea. Would you
volunteer to do that? :)

Cheers!


>
> Regards,
> Dmitry
>
> On Wed, Dec 9, 2020 at 1:38 AM Thiago H. de Paula Figueiredo <
> thiag...@gmail.com> wrote:
>
> > Hello, community!
> >
> > We're close to releasing Tapestry 5.7.0, which I'd love to have it
> released
> > before the end of year holidays to end this troubled year with something
> > nice. Since there's going to be larger changes than usual, I'd like to
> > invite the community to test it on their projects a bit to eventually
> catch
> > some regressions the team and the unit tests couldn't catch yet. You can
> > see a list of all changes in
> >
> >
> https://issues.apache.org/jira/issues/?jql=project%20=%20TAP5%20AND%20fixVersion%20=%205.7.0
> > until a proper release notes page is added to the website.
> >
> > Tapestry 5.7.0-SNAPSHOT JARs were uploaded to the ASF's Maven snapshots
> > repository at https://repository.apache.org/content/groups/snapshots/.
> >
> > Biggest change is making Tapestry easier to use in modularized (i.e. Java
> > 9+ modules) projects. The work on this was done in 2 major parts and a
> > small one:
> > * Avoiding split packages. In other words, packages that are present in
> > more than one JAR. We had to move lots of Tapestry classes around
> > JARs/subprojects since there were many and populous split packages.
> > * Providing automatic module names, all using the formula
> > "org.apache.tapestry.[adapted JAR name]", where [adapted JAR name] is the
> > current JAR name with 'tapestry-', dashes and the character '5' removed.
> > For example, tapestry5-annotations automatic module name is
> > org.apache.tapestry.annotations. Creation of module-info.java files are
> > left for the future.
> > * A simple migration tool to update fully qualified class names in Java
> > source files for classes which were moved and/or renamed. It's basically
> a
> > search-and-replace using a table of (old class name -> new class name)
> > extracted out of Git commits.
> >
> > To run this migration tool, download the JAR at
> >
> >
> https://repository.apache.org/content/groups/snapshots/org/apache/tapestry/tapestry-version-migrator/5.7.0-SNAPSHOT/tapestry-version-migrator-5.7.0-20201208.195518-8.jar
> > and run "java
> > -jar tapestry-version-migrator-5.7.0-20201208.195518-8.jar upgrade 5.7.0"
> > (without quotes). It will process all .java files found in the current
> > folder and its subfolders, recursively.
> >
> > Since the stuff above was going to be needed anyway, I've also seized the
> > opportunity to separate the Tapestry request pipeline classes (i.d.
> > HttpServletRequestFilter, RequestFilter, Dispatcher, etc) into a new
> > subproject/JAR, tapestry-http, which can be used without tapestry-core,
> > which includes the page/component framework and the asset handling
> classes.
> >
> > The other breaking change in 5.7.0 is changing the TypeCoercer service
> from
> > having an unordered configuration to a mapped one. This was done so it's
> > very clear when a coercion is overriden. Here's a real example from
> > Tapestry itself: if you had a contribution method like this:
> >
> >     @Contribute(TypeCoercer.class)
> >     public static void provideCoercions(Configuration<CoercionTuple>
> > configuration)
> >     {
> >         configuration.add(CoercionTuple.create(String.class,
> > JSONObject.class, new StringToJSONObject()));
> >      }
> >
> > it should be changed to this:
> >
> >     public static void
> > provideCoercions(MappedConfiguration<CoercionTuple.Key, CoercionTuple>
> > configuration)
> >     {
> >         CoercionTuple<String, JSONObject> stringToJsonObject =
> > CoercionTuple.create(String.class, JSONObject.class, new
> > StringToJSONObject());
> >         configuration.add(stringToJsonObject.getKey(),
> stringToJsonObject);
> >     }
> >
> > 5.7.0 is built with Java 11 (first long-term support version after Java
> 9),
> > but targeting Java 8 bytecode, so It should be able to run on Java 8 to
> 14.
> >
> > Please post your findings here in the mailing list so we can coordinate
> the
> > creation of Jira tickets and get this new version ready to be voted and
> > released in the next 2 weeks.
> >
> > Thanks in advance! Happy testing!
> >
> > --
> > Thiago
> >
>
>
> --
> Dmitry Gusev
>
> AnjLab Team
> http://anjlab.com
>


-- 
Thiago

Reply via email to