RequestBeanReader { public <T> void registerQueryParam(Class<T> beanClass, BeanClassNameValidator beanClassNameValidator) { if (!queryParamContext.containsKey(beanClass)) { new QueryParamClassValidator(beanClass, beanClassNameValidator).validate(); queryParamContext.put(beanClass, new QueryParamContext<>(beanClass)); } }  void registerQueryParam(Class<T> beanClass, BeanClassNameValidator beanClassNameValidator); void registerBean(Class<?> beanClass, BeanClassValidator validator); boolean containsQueryParam(Class<?> beanClass); boolean containsBean(Class<?> beanClass); T fromParams(Class<T> beanClass, Map<String, String> params); T fromJSON(Class<T> beanClass, byte[] body);  }
@Test void registerQueryParam() { reader.registerQueryParam(TestQueryParamBean.class, validator.beanClassNameValidator); reader.registerQueryParam(TestQueryParamBean.class, validator.beanClassNameValidator); }