So here's a new issue with a patch attached. https://issues.apache.org/jira/browse/SHIRO-422
Please see the JIRA comments for more details on the solution. Forked project including this patch: https://github.com/hwellmann/shiro.git Best regards, Harald Am 09.03.2013 23:18, schrieb Les Hazlewood:
This sounds good Harald - thanks. We'll look out for it. Cheers, Les On Sat, Mar 9, 2013 at 1:03 PM, Harald Wellmann <[email protected] <mailto:[email protected]>> wrote: I'm currently experimenting with another approach for integrating CDI injection and shiro.ini. The idea is to make @Named CDI beans available to the Shiro environment using a custom CdiIniWebEnvironment so that a $foo reference will resolve to a managed bean named "foo" - that way, bean instances will be created by the CDI BeanManager and not by Shiro, so @Inject will work as expected. I'll create a feature request and attach a patch, once my code is cleaned up a bit. Best regards, Harald Am 09.03.2013 20:59, schrieb Les Hazlewood: On Sat, Mar 9, 2013 at 1:38 AM, Mo Maison <[email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>>> wrote: @Harald & @Les : thank you for your answers. I managed to work around JEE objects injection, by adding some utility static factory code in order to get arbitrary class objects in .ini ; not always an applicable solution though. I noticed two strange things with INI however : 1 - it is not possible to dereference properties of referenced objects at the right of the = sign. obj.prop = $ref works, but obj = $ref.prop does not. I was very disappointed by this limitation. I'm surprised I haven't thought of this! Please open a Jira feature enhancement - this wouldn't be hard to support. 2 - when injecting a property whose setter expects say a Set, special handling is performed (split string with comma and build a set before injection or so...). But this is performed /also/ for references, thus this does not work if myUrlsSetRef is already a Set : obj.urlsSet = $myUrlsSetRef because shiro wraps the referenced set into a new set with 1 element. I had to create a fake setter with Object attribute type to avoid this. I'd suggest to disable this wrapping mechanism for references (but it may break compatibility). Please open a bug for this, it should be fixed asap. Please keep the feedback coming along with any help w/ CDI - it is much appreciated. Best, Les
