All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.dropwizard.auth.PolymorphicAuthDynamicFeature Maven / Gradle / Ivy

There is a newer version: 1.3.7
Show newest version
package io.dropwizard.auth;

import com.google.common.collect.ImmutableMap;
import org.glassfish.jersey.server.model.AnnotatedMethod;

import java.lang.annotation.Annotation;
import java.security.Principal;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.container.DynamicFeature;
import javax.ws.rs.container.ResourceInfo;
import javax.ws.rs.core.FeatureContext;

/**
 * A {@link DynamicFeature} that registers the provided auth filters
 * to resource methods annotated with the {@link Auth} according to
 * the type of the annotated method parameter.
 * 

Note that this feature only pertains to authentication. * To enable authorization, use {@link AuthDynamicFeature}.

*/ public class PolymorphicAuthDynamicFeature implements DynamicFeature { private final ImmutableMap, ContainerRequestFilter> authFilterMap; public PolymorphicAuthDynamicFeature( ImmutableMap, ContainerRequestFilter> authFilterMap ) { this.authFilterMap = authFilterMap; } @Override public void configure(ResourceInfo resourceInfo, FeatureContext context) { final AnnotatedMethod am = new AnnotatedMethod(resourceInfo.getResourceMethod()); final Annotation[][] parameterAnnotations = am.getParameterAnnotations(); final Class[] parameterTypes = am.getParameterTypes(); for (int i = 0; i < parameterAnnotations.length; i++) { for (final Annotation annotation : parameterAnnotations[i]) { if (annotation instanceof Auth && authFilterMap.containsKey(parameterTypes[i])) { context.register(authFilterMap.get(parameterTypes[i])); return; } } } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy