The bottom line is that I would prefer supporting standards-based APis rather than proprietary ones.
I think you guys are better suited to knowing the "right way"
forward :)
I'm honestly surprised I got it working, I barely understand all
this, I looked at your ShiroSecurityExtension class and the
processor from the Omnifaces Quarkus extension for some pointers:
https://github.com/quarkiverse/quarkus-omnifaces/blob/main/deployment/src/main/java/io/quarkiverse/omnifaces/deployment/OmnifacesProcessor.java
In the Quarkus CDI reference it says:
"Quarkus incorporates build-time optimizations in order to provide
instant startup and low memory footprint.
The downside of this approach is that CDI Portable Extensions
cannot be supported.
Nevertheless, most of the functionality can be achieved using
Quarkus extensions.
See the integration
guide for more information."
So I don't know the difference between a "build compatible"
extension and a "portable" extension, but Quarkus is saying
portable extensions can not work.
I'd be happy to share the couple @BuildSteps I'm using to get the
security annotations working. I also copied and slightly edited
(just to make public) a few files from the cdi module into my
extension project (ShiroSecurityInterceptor, ShiroSecureAnnotation
and AopHelper). I *think* if the ShiroSecureAnnotation were
public I wouldn't need any of that but I need to reference that
annotation class to add it to classes/methods in the BuildStep in
a similar way you guys do in the CDI Extension so the interceptor
works.
Taking another look, I imagine there's some more work that could
be done to put the functionality of the shiro-jakarta-ee module
into the extension. There's probably more stuff I'm missing that
I'm not even realizing (which yeah, there's another CDI Extension
in there...). And I'm not even worrying about "native" mode at
all yet, which is another place the Quarkus extensions help
out/make things work.
I'd be happy to help in whatever way I can.
Dave
Hi,
I have mixed feelings about this one. On one hand, it’s great to have an extension,
on the other hand, I would personally prefer build-compatible portable CDI extension.
I do believe that portable BCE work correctly on Quarkus, without making a proprietary extension.
This would also work with Helidon, and maybe Micronaut to boot.
In any case, we would consider anything you could donate to Shiro.
What do you think?
|