Fix ArrayStoreException caused by JerseyAutoConfiguration again

This is a follow-on from the changes made in 2b7bf3e. In addition to the
problematic use of @ConditionalOnClass that was addressed in 2b7bf3e,
JerseyAutoConfiguration also used @ConditionalOnBean referencing a 
Jersey class. This has the same problem when used on a class that
implements WebApplicationInitializer. Implementing
WebApplicationInitializer causes the class’s annotations to be
introspected during servlet container initialiser processing. If a
@ConditionalOnBean annotation references a Class that cannot be
loaded an ArrayStoreException occurs.

This commit updates JerseyAutoConfiguration to reference ResourceConfig
as a String. This allows it annotations to be introspected without
attempting to load a Jersey class that may not be on the classpath.

Fixes gh-1733
Fixes gh-1719
This commit is contained in:
Andy Wilkinson 2014-10-20 10:14:53 +01:00
parent 9984939c47
commit 31874090b8
1 changed files with 1 additions and 1 deletions

View File

@ -52,7 +52,7 @@ import org.springframework.web.filter.RequestContextFilter;
@ConditionalOnClass(name = {
"org.glassfish.jersey.server.spring.SpringComponentProvider",
"javax.servlet.ServletRegistration" })
@ConditionalOnBean(ResourceConfig.class)
@ConditionalOnBean(type = "org.glassfish.jersey.server.ResourceConfig")
@ConditionalOnWebApplication
@Order(Ordered.HIGHEST_PRECEDENCE)
@AutoConfigureBefore(DispatcherServletAutoConfiguration.class)