users@jersey.java.net

Re: [Jersey] Principal injection?

From: Zoltan Arnold NAGY <Zoltan.Nagy_at_Sun.COM>
Date: Wed, 04 Nov 2009 17:39:43 +0100

So constructor parameter injection is supported in InjectableProviders?
Good to know.. :)

Zoltan

Paul Sandoz wrote:
>
> On Nov 4, 2009, at 3:31 PM, Casper Bang wrote:
>
>> I do it the same way, implementing my own Principal such as to be able
>> to add custom context (i.e. allow multiple credentials). If I remember
>> correctly, this was the recommended aproach by Paul - but it would be
>> interesting if you could somehow inject @User, to match the rest of
>> Jersey's way of doing things. :)
>>
>
> You can develop your own injectable provider to inject the User if you
> like.
>
> @Provider
> public class UserInjector implements InjectableProvider<Context, Type> {
>
> private final SecurityContext securityContext;
>
> public UserInjector(@Context SecurityContext securityContext) {
> this.securityContext = securityContext;
> }
>
> public ComponentScope getScope() {
> return ComponentScope.PerRequest;
> }
>
> public Injectable getInjectable(ComponentContext ic, Context a,
> Type c) {
> if (c == User.class) {
> return new Injectable<User>() {
> return
> ((InternalPrincipal)securityContext.getUserPrincipal()).getUser();
> };
> }
> return null;
> }
> }
>
> Paul.
>
>> /Casper
>>
>>
>> Zoltan Arnold NAGY wrote:
>>> Hi,
>>>
>>> I'm wondering if there's a better way.. I'm currently doing it like
>>> this:
>>> @Path("/d")
>>> public class DatasResource {
>>> @Context
>>> private SecurityContext securityContext;
>>>
>>> @PUT
>>> @Consumes(MediaType.APPLICATION_JSON)
>>> public Response addData(Sample s) {
>>> User user =
>>> ((InternalPrincipal)securityContext.getUserPrincipal()).getUser();
>>> ..
>>> }
>>>
>>> my own filter sets the appropriate principal (and securitycontext),
>>> and it's
>>> always set.
>>>
>>> Thanks,
>>> Zoltan
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>