What is the equivalent of PerRequestTypeInjectableProvider in Jersey2?
I've tries to use AbstractBinder but it doesn't seem to work. The Seesion I'm trying to inject is always null.
I tried to replace jersey-1 old code
public class UserSessionProvider extends PerRequestTypeInjectableProvider<Context, Session> {
@Context HttpServletRequest request;
public UserSessionProvider() {
super(Session.class);
}
@Override
public Injectable<Session> getInjectable(ComponentContext cc, Context context) {
return new Injectable<Session>() {
@Override
public Session getValue() {
Session session = SessionUtils.createSession(request);
request.setAttribute(WebSessionConfig.s.servlet_attribute_name, session);
return session;
}
};
}
}
with jersey-2 new code, replacing PerRequestTypeInjectableProvider with AbstractBinder:
public class UserSessionProvider extends AbstractBinder {
private static final Logger logger = Logger.getLogger(UserSessionProvider.class);
@Context HttpServletRequest request;
@Override
protected void configure() {
bind(SessionResolver.class).to(Session.class);
}
public class SessionResolver implements InjectionResolver<Session> {
@Override
public Object resolve(Injectee injectee, ServiceHandle<?> root) {
Session session = SessionUtils.createSession(request);
request.setAttribute(WebSessionConfig.s.servlet_attribute_name, session);
return session;
}
@Override
public boolean isConstructorParameterIndicator() {
return true;
}
@Override
public boolean isMethodParameterIndicator() {
return true;
}
}
}
The issue was that the package was not registered.