Как создать собственный объект контекста, который можно внедрить с помощью @Context?

Я хочу иметь возможность сделать что-то вроде этого:

@GET
@Path("test")
public Response someMethod(@Context MyCustomContext myCustomContext) {
 ...
}

Я нашел этот старый пост о переполнении стека, в котором описаны различные методы для этого: Использование @Context, @Provider и ContextResolver в JAX-RS. Я реализовал лучший ответ (который не зависит от реализации) и заставил его работать, но это не совсем то, что я хочу. Вместо этого это выглядело так:

@GET
@Path("test")
public Response someMethod(@Context Providers providers) {
        ContextResolver<MyCustomContext> p = providers.getContextResolver(MyCustomContext.class, MediaType.WILDCARD_TYPE);
        MyCustomContext myCustomContext = p.getContext(null);
       ... 
}

На этом посту были и другие решения, но они зависели от реализации. Я заметил в документации quarkus, что есть раздел о пользовательских контекстах, который можно найти здесь: https://quarkus.io/guides/cdi-reference#synthetic-beans, но это относится только к расширениям. У кого-нибудь есть идеи, как это сделать в проекте quarkus?


person jsolum    schedule 13.06.2019    source источник
comment
Любое решение будет зависеть от реализации (JAX-RS).   -  person Paul Samsotha    schedule 13.06.2019
comment
Ты прав. Я думаю, что нашел решение, которое мне нравится. В итоге я использовал ResteasyContext. Итак, что я сделал, так это поместил ResteasyContext.pushContext(User.class, currentUser); в фильтр jaxrs, что позволило мне сделать @Context User currentUser.   -  person jsolum    schedule 15.06.2019