package bo.gotthardt.test;
import bo.gotthardt.model.User;
import io.dropwizard.auth.Auth;
import org.glassfish.hk2.api.Factory;
import org.glassfish.hk2.api.ServiceLocator;
import org.glassfish.hk2.utilities.binding.AbstractBinder;
import org.glassfish.jersey.server.internal.inject.AbstractContainerRequestValueFactory;
import org.glassfish.jersey.server.internal.inject.AbstractValueFactoryProvider;
import org.glassfish.jersey.server.internal.inject.MultivaluedParameterExtractorProvider;
import org.glassfish.jersey.server.model.Parameter;
import org.glassfish.jersey.server.spi.internal.ValueFactoryProvider;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.security.Principal;
public class DummyAuth extends AbstractValueFactoryProvider {
private static User user;
@Inject
public DummyAuth(MultivaluedParameterExtractorProvider mpep, ServiceLocator locator) {
super(mpep, locator, Parameter.Source.UNKNOWN);
}
@Override
protected Factory<?> createValueFactory(Parameter parameter) {
if (!parameter.isAnnotationPresent(Auth.class)) {
return null;
}
return new AbstractContainerRequestValueFactory<Principal>() {
public Principal provide() {
return user;
}
};
}
public static void setUser(User newUser) {
user = newUser;
}
public static class Binder extends AbstractBinder {
@Override
protected void configure() {
bind(DummyAuth.class).to(ValueFactoryProvider.class).in(Singleton.class);
}
}
}