
net.winterly.rxjersey.server.rxjava.RxJerseyServerFeature Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of rxjava-server Show documentation
Show all versions of rxjava-server Show documentation
RxJava extension for Jersey and Dropwizard
The newest version!
package net.winterly.rxjersey.server.rxjava;
import org.glassfish.hk2.utilities.binding.AbstractBinder;
import org.glassfish.jersey.server.spi.internal.ResourceMethodDispatcher;
import org.glassfish.jersey.server.spi.internal.ResourceMethodInvocationHandlerProvider;
import javax.inject.Singleton;
import javax.ws.rs.core.Feature;
import javax.ws.rs.core.FeatureContext;
import java.util.LinkedList;
import java.util.List;
/**
* See Github Repository
*/
public final class RxJerseyServerFeature implements Feature {
private final List>> interceptors = new LinkedList<>();
public RxJerseyServerFeature register(Class extends ObservableRequestInterceptor>> interceptor) {
interceptors.add(interceptor);
return this;
}
@Override
public boolean configure(FeatureContext context) {
context.register(RxBodyWriter.class);
context.register(new Binder());
return true;
}
private class Binder extends AbstractBinder {
@Override
protected void configure() {
bind(SingleInvocationHandlerProvider.class)
.to(ResourceMethodInvocationHandlerProvider.class)
.in(Singleton.class);
bind(SingleMethodDispatcher.Provider.class)
.to(ResourceMethodDispatcher.Provider.class)
.in(Singleton.class)
.ranked(1);
interceptors.forEach(interceptor -> bind(interceptor)
.to(ObservableRequestInterceptor.class)
.in(Singleton.class)
);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy