Hi Brian,
thanks for the update. I originally wanted to release Jandex 3.0 in July,
but I also wanted to work on proper documentation and that always means
missing deadlines :-) Early September sounds doable though. I'm aiming for
Jandex 3.0 late next week or so.
Upgrading in WildFly should be pretty straightforward, though I remember
WildFly still ships its own `CompositeIndex`, which should really be
replaced by the one in Jandex. I'm not sure if all WildFly components using
Jandex have already updated to 2.4.3, though -- if not, it will be more
interesting.
LT
On Tue, Aug 16, 2022 at 4:37 PM Brian Stansberry <
brian.stansberry(a)redhat.com> wrote:
Hi Ladislav,
Thanks for this thorough update. It came in when I was on PTO and I read
it but wasn't inclined to reply then. :) And thanks as well for
the WFLY-16569 updates.
Do you have a sense for when Jandex 3.0 will go final? We're planning for
WF 27 Beta1, likely in early September, and this seems like a good move to
make in that release, if it will be ready.
Cheers,
Brian
On Tue, Jun 28, 2022 at 4:19 AM Ladislav Thon <lthon(a)redhat.com> wrote:
> Hi,
>
> last week, I've released Jandex 3.0.0-RC1, and yesterday, I've released
> Jandex 2.4.3.Final. (A corresponding release of the Jandex Maven plugin is
> on its way to Central as we speak.)
>
> There's a few breaking changes in Jandex 3.0 and the 2.4.3 release is
> supposed to make migration easier (or at least require less coordination).
>
> Specifically, Jandex 2.4.3 deprecates these 2 methods because they have a
> different return type in 3.0:
>
> - ClassInfo.annotations()
> - MethodInfo.parameters()
>
> Replacements are, respectively:
>
> - ClassInfo.annotationsMap()
> - MethodInfo.parameterTypes()
>
> These 2 replacement methods are present both in Jandex 2.4.3 and
> 3.0.0[-RC1].
>
> Additionally, certain usages of MethodInfo.parameters() can be simplified
> using MethodInfo.parametersCount() and parameterType(int). These 2 methods
> are also present both in 2.4.3 and 3.0.0[-RC1].
>
> Updating to Jandex 2.4.3 is safe, because it's fully compatible with
> previous releases. A project that uses Jandex 2.4.3 and avoids deprecated
> methods is almost fully _binary_ compatible with Jandex 3.0 (almost because
> of the return type change in Indexer.index(), but that should only affect a
> very small number of existing code paths).
>
> I went through the projects that I know use Jandex and made the necessary
> changes myself and will submit PRs in the coming days. These projects are:
>
> - Quarkus, including ArC and RESTEasy Reactive
> - Gizmo
> - Weld
> - SmallRye OpenAPI
> - SmallRye Async API -- no changes required
> - SmallRye GraphQL
> - WildFly Core -- no changes required, just updating Jandex
> - WildFly Full
> - RESTEasy (classic) -- no changes required
>
> If you maintain (or know about) some other project that uses Jandex, feel
> free to ping me, I'll be happy to help.
>
> Note that there are more changes in Jandex 3.0. All the details can be
> found in the issue tracker:
>
https://github.com/smallrye/jandex/milestone/3 For your convenience,
> here's a summary of what's coming in Jandex 3.0 and is technically a
> breaking change, even though most of them won't likely affect anyone:
>
> - moved Jandex to SmallRye
> - bumped minimum Java version to 8
> - regularized access to annotations from AnnotationTarget
> - this is why ClassInfo.annotations() needs to change the return type
> - there are methods to access annotations without considering nested
> annotation targets, too!
> - regularized access to method parameters from MethodInfo
> - this is why MethodInfo.parameters() needs to change the return type
> - common parameter-accessing methods on MethodInfo ignore
> mandated/synthetic parameters
> - special methods exist to access all parameters, including
> mandated/synthetic
> - added a new kind of types, TypeVariableReference, to faithfully
> represent recursive type variables
> - changed Indexer.index() to return void (instead of ClassInfo)
> - required to be able to post-process an index during Indexer.complete()
> - added indexing of class-retained annotations
> - Jandex 2 only indexes runtime-retained annotations
> - AnnotationInstance.runtimeVisible() can be used to distinguish
> - added a few methods to IndexView
> - navigation for interfaces: getKnownDirectSubinterfaces(),
> getAllKnownSubinterfaces()
> - navigation for packages: getClassesInPackage(), getSubpackages()
> - breaks projects that implement this interface on their own (which I
> know at least WildFly and Quarkus do)
> - removed IndexReader.getDataVersion()
> - it's been incorrect anyway, and I couldn't find anyone using it
>
> When Jandex 3.0 goes final, which I hope happens in a few weeks, I will
> publish an announcement with all details on the SmallRye blog. In the
> meantime, I'll use the previously mentioned projects (and their test
> suites) to verify that Jandex 3.0 doesn't contain any hidden surprises.
>
> Any questions? Ideas? My inbox and the Jandex issue tracker are always
> open :-)
>
> Thanks,
>
> LT
> _______________________________________________
> wildfly-dev mailing list -- wildfly-dev(a)lists.jboss.org
> To unsubscribe send an email to wildfly-dev-leave(a)lists.jboss.org
> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
--
Brian Stansberry
Principal Architect, Red Hat JBoss EAP
He/Him/His