pull/13438/head
Phillip Webb 7 years ago
parent d9029ef69e
commit 37646517cf

@ -115,10 +115,9 @@ public class JerseyAutoConfiguration implements ServletContextAware {
private void resolveApplicationPath() { private void resolveApplicationPath() {
if (StringUtils.hasLength(this.jersey.getApplicationPath())) { if (StringUtils.hasLength(this.jersey.getApplicationPath())) {
this.path = parseApplicationPath(this.jersey.getApplicationPath()); this.path = parseApplicationPath(this.jersey.getApplicationPath());
} } else {
else { this.path = findApplicationPath(
this.path = findApplicationPath(AnnotationUtils.findAnnotation( AnnotationUtils.findAnnotation(this.config.getApplication().getClass(), ApplicationPath.class));
this.config.getApplication().getClass(), ApplicationPath.class));
} }
} }
@ -149,8 +148,7 @@ public class JerseyAutoConfiguration implements ServletContextAware {
registration.setFilter(new ServletContainer(this.config)); registration.setFilter(new ServletContainer(this.config));
registration.setUrlPatterns(Arrays.asList(this.path)); registration.setUrlPatterns(Arrays.asList(this.path));
registration.setOrder(this.jersey.getFilter().getOrder()); registration.setOrder(this.jersey.getFilter().getOrder());
registration.addInitParameter(ServletProperties.FILTER_CONTEXT_PATH, registration.addInitParameter(ServletProperties.FILTER_CONTEXT_PATH, stripPattern(this.path));
stripPattern(this.path));
addInitParameters(registration); addInitParameters(registration);
registration.setName("jerseyFilter"); registration.setName("jerseyFilter");
registration.setDispatcherTypes(EnumSet.allOf(DispatcherType.class)); registration.setDispatcherTypes(EnumSet.allOf(DispatcherType.class));
@ -168,8 +166,8 @@ public class JerseyAutoConfiguration implements ServletContextAware {
@ConditionalOnMissingBean(name = "jerseyServletRegistration") @ConditionalOnMissingBean(name = "jerseyServletRegistration")
@ConditionalOnProperty(prefix = "spring.jersey", name = "type", havingValue = "servlet", matchIfMissing = true) @ConditionalOnProperty(prefix = "spring.jersey", name = "type", havingValue = "servlet", matchIfMissing = true)
public ServletRegistrationBean jerseyServletRegistration() { public ServletRegistrationBean jerseyServletRegistration() {
ServletRegistrationBean registration = new ServletRegistrationBean( ServletRegistrationBean registration = new ServletRegistrationBean(new ServletContainer(this.config),
new ServletContainer(this.config), this.path); this.path);
addInitParameters(registration); addInitParameters(registration);
registration.setName(getServletRegistrationName()); registration.setName(getServletRegistrationName());
registration.setLoadOnStartup(this.jersey.getServlet().getLoadOnStartup()); registration.setLoadOnStartup(this.jersey.getServlet().getLoadOnStartup());
@ -204,23 +202,18 @@ public class JerseyAutoConfiguration implements ServletContextAware {
@Override @Override
public void setServletContext(ServletContext servletContext) { public void setServletContext(ServletContext servletContext) {
String servletRegistrationName = getServletRegistrationName(); String servletRegistrationName = getServletRegistrationName();
ServletRegistration registration = servletContext ServletRegistration registration = servletContext.getServletRegistration(servletRegistrationName);
.getServletRegistration(servletRegistrationName);
if (registration != null) { if (registration != null) {
if (logger.isInfoEnabled()) { if (logger.isInfoEnabled()) {
logger.info("Configuring existing registration for Jersey servlet '" logger.info("Configuring existing registration for Jersey servlet '" + servletRegistrationName + "'");
+ servletRegistrationName + "'");
} }
registration.setInitParameters(this.jersey.getInit()); registration.setInitParameters(this.jersey.getInit());
registration.setInitParameter( registration.setInitParameter(CommonProperties.METAINF_SERVICES_LOOKUP_DISABLE, Boolean.TRUE.toString());
CommonProperties.METAINF_SERVICES_LOOKUP_DISABLE,
Boolean.TRUE.toString());
} }
} }
@Order(Ordered.HIGHEST_PRECEDENCE) @Order(Ordered.HIGHEST_PRECEDENCE)
public static final class JerseyWebApplicationInitializer public static final class JerseyWebApplicationInitializer implements WebApplicationInitializer {
implements WebApplicationInitializer {
@Override @Override
public void onStartup(ServletContext servletContext) throws ServletException { public void onStartup(ServletContext servletContext) throws ServletException {
@ -239,22 +232,19 @@ public class JerseyAutoConfiguration implements ServletContextAware {
private static final String JAXB_ANNOTATION_INTROSPECTOR_CLASS_NAME = "com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector"; private static final String JAXB_ANNOTATION_INTROSPECTOR_CLASS_NAME = "com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector";
@Bean @Bean
public ResourceConfigCustomizer resourceConfigCustomizer( public ResourceConfigCustomizer resourceConfigCustomizer(final ObjectMapper objectMapper) {
final ObjectMapper objectMapper) {
addJaxbAnnotationIntrospectorIfPresent(objectMapper); addJaxbAnnotationIntrospectorIfPresent(objectMapper);
return new ResourceConfigCustomizer() { return new ResourceConfigCustomizer() {
@Override @Override
public void customize(ResourceConfig config) { public void customize(ResourceConfig config) {
config.register(JacksonFeature.class); config.register(JacksonFeature.class);
config.register(new ObjectMapperContextResolver(objectMapper), config.register(new ObjectMapperContextResolver(objectMapper), ContextResolver.class);
ContextResolver.class);
} }
}; };
} }
private void addJaxbAnnotationIntrospectorIfPresent(ObjectMapper objectMapper) { private void addJaxbAnnotationIntrospectorIfPresent(ObjectMapper objectMapper) {
if (ClassUtils.isPresent(JAXB_ANNOTATION_INTROSPECTOR_CLASS_NAME, if (ClassUtils.isPresent(JAXB_ANNOTATION_INTROSPECTOR_CLASS_NAME, getClass().getClassLoader())) {
getClass().getClassLoader())) {
new ObjectMapperCustomizer().addJaxbAnnotationIntrospector(objectMapper); new ObjectMapperCustomizer().addJaxbAnnotationIntrospector(objectMapper);
} }
} }
@ -265,22 +255,18 @@ public class JerseyAutoConfiguration implements ServletContextAware {
JaxbAnnotationIntrospector jaxbAnnotationIntrospector = new JaxbAnnotationIntrospector( JaxbAnnotationIntrospector jaxbAnnotationIntrospector = new JaxbAnnotationIntrospector(
objectMapper.getTypeFactory()); objectMapper.getTypeFactory());
objectMapper.setAnnotationIntrospectors( objectMapper.setAnnotationIntrospectors(
createPair(objectMapper.getSerializationConfig(), createPair(objectMapper.getSerializationConfig(), jaxbAnnotationIntrospector),
jaxbAnnotationIntrospector), createPair(objectMapper.getDeserializationConfig(), jaxbAnnotationIntrospector));
createPair(objectMapper.getDeserializationConfig(),
jaxbAnnotationIntrospector));
} }
private AnnotationIntrospector createPair(MapperConfig<?> config, private AnnotationIntrospector createPair(MapperConfig<?> config,
JaxbAnnotationIntrospector jaxbAnnotationIntrospector) { JaxbAnnotationIntrospector jaxbAnnotationIntrospector) {
return AnnotationIntrospector.pair(config.getAnnotationIntrospector(), return AnnotationIntrospector.pair(config.getAnnotationIntrospector(), jaxbAnnotationIntrospector);
jaxbAnnotationIntrospector);
} }
} }
private static final class ObjectMapperContextResolver private static final class ObjectMapperContextResolver implements ContextResolver<ObjectMapper> {
implements ContextResolver<ObjectMapper> {
private final ObjectMapper objectMapper; private final ObjectMapper objectMapper;

@ -53,8 +53,7 @@ public class KafkaProperties {
* Comma-delimited list of host:port pairs to use for establishing the initial * Comma-delimited list of host:port pairs to use for establishing the initial
* connection to the Kafka cluster. * connection to the Kafka cluster.
*/ */
private List<String> bootstrapServers = new ArrayList<String>( private List<String> bootstrapServers = new ArrayList<String>(Collections.singletonList("localhost:9092"));
Collections.singletonList("localhost:9092"));
/** /**
* Id to pass to the server when making requests; used for server-side logging. * Id to pass to the server when making requests; used for server-side logging.
@ -123,8 +122,7 @@ public class KafkaProperties {
private Map<String, Object> buildCommonProperties() { private Map<String, Object> buildCommonProperties() {
Map<String, Object> properties = new HashMap<String, Object>(); Map<String, Object> properties = new HashMap<String, Object>();
if (this.bootstrapServers != null) { if (this.bootstrapServers != null) {
properties.put(CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG, properties.put(CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG, this.bootstrapServers);
this.bootstrapServers);
} }
if (this.clientId != null) { if (this.clientId != null) {
properties.put(CommonClientConfigs.CLIENT_ID_CONFIG, this.clientId); properties.put(CommonClientConfigs.CLIENT_ID_CONFIG, this.clientId);
@ -133,20 +131,16 @@ public class KafkaProperties {
properties.put(SslConfigs.SSL_KEY_PASSWORD_CONFIG, this.ssl.getKeyPassword()); properties.put(SslConfigs.SSL_KEY_PASSWORD_CONFIG, this.ssl.getKeyPassword());
} }
if (this.ssl.getKeystoreLocation() != null) { if (this.ssl.getKeystoreLocation() != null) {
properties.put(SslConfigs.SSL_KEYSTORE_LOCATION_CONFIG, properties.put(SslConfigs.SSL_KEYSTORE_LOCATION_CONFIG, resourceToPath(this.ssl.getKeystoreLocation()));
resourceToPath(this.ssl.getKeystoreLocation()));
} }
if (this.ssl.getKeystorePassword() != null) { if (this.ssl.getKeystorePassword() != null) {
properties.put(SslConfigs.SSL_KEYSTORE_PASSWORD_CONFIG, properties.put(SslConfigs.SSL_KEYSTORE_PASSWORD_CONFIG, this.ssl.getKeystorePassword());
this.ssl.getKeystorePassword());
} }
if (this.ssl.getTruststoreLocation() != null) { if (this.ssl.getTruststoreLocation() != null) {
properties.put(SslConfigs.SSL_TRUSTSTORE_LOCATION_CONFIG, properties.put(SslConfigs.SSL_TRUSTSTORE_LOCATION_CONFIG, resourceToPath(this.ssl.getTruststoreLocation()));
resourceToPath(this.ssl.getTruststoreLocation()));
} }
if (this.ssl.getTruststorePassword() != null) { if (this.ssl.getTruststorePassword() != null) {
properties.put(SslConfigs.SSL_TRUSTSTORE_PASSWORD_CONFIG, properties.put(SslConfigs.SSL_TRUSTSTORE_PASSWORD_CONFIG, this.ssl.getTruststorePassword());
this.ssl.getTruststorePassword());
} }
if (!CollectionUtils.isEmpty(this.properties)) { if (!CollectionUtils.isEmpty(this.properties)) {
properties.putAll(this.properties); properties.putAll(this.properties);
@ -159,8 +153,9 @@ public class KafkaProperties {
* <p> * <p>
* This allows you to add additional properties, if necessary, and override the * This allows you to add additional properties, if necessary, and override the
* default kafkaConsumerFactory bean. * default kafkaConsumerFactory bean.
* @return the consumer properties initialized with the customizations defined on this *
* instance * @return the consumer properties initialized with the customizations defined
* on this instance
*/ */
public Map<String, Object> buildConsumerProperties() { public Map<String, Object> buildConsumerProperties() {
Map<String, Object> properties = buildCommonProperties(); Map<String, Object> properties = buildCommonProperties();
@ -173,8 +168,9 @@ public class KafkaProperties {
* <p> * <p>
* This allows you to add additional properties, if necessary, and override the * This allows you to add additional properties, if necessary, and override the
* default kafkaProducerFactory bean. * default kafkaProducerFactory bean.
* @return the producer properties initialized with the customizations defined on this *
* instance * @return the producer properties initialized with the customizations defined
* on this instance
*/ */
public Map<String, Object> buildProducerProperties() { public Map<String, Object> buildProducerProperties() {
Map<String, Object> properties = buildCommonProperties(); Map<String, Object> properties = buildCommonProperties();
@ -185,10 +181,8 @@ public class KafkaProperties {
private static String resourceToPath(Resource resource) { private static String resourceToPath(Resource resource) {
try { try {
return resource.getFile().getAbsolutePath(); return resource.getFile().getAbsolutePath();
} } catch (IOException ex) {
catch (IOException ex) { throw new IllegalStateException("Resource '" + resource + "' must be on a file system", ex);
throw new IllegalStateException(
"Resource '" + resource + "' must be on a file system", ex);
} }
} }
@ -197,8 +191,8 @@ public class KafkaProperties {
private final Ssl ssl = new Ssl(); private final Ssl ssl = new Ssl();
/** /**
* Frequency in milliseconds that the consumer offsets are auto-committed to Kafka * Frequency in milliseconds that the consumer offsets are auto-committed to
* if 'enable.auto.commit' true. * Kafka if 'enable.auto.commit' true.
*/ */
private Integer autoCommitInterval; private Integer autoCommitInterval;
@ -220,7 +214,8 @@ public class KafkaProperties {
private String clientId; private String clientId;
/** /**
* If true the consumer's offset will be periodically committed in the background. * If true the consumer's offset will be periodically committed in the
* background.
*/ */
private Boolean enableAutoCommit; private Boolean enableAutoCommit;
@ -364,27 +359,22 @@ public class KafkaProperties {
public Map<String, Object> buildProperties() { public Map<String, Object> buildProperties() {
Map<String, Object> properties = new HashMap<String, Object>(); Map<String, Object> properties = new HashMap<String, Object>();
if (this.autoCommitInterval != null) { if (this.autoCommitInterval != null) {
properties.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, properties.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, this.autoCommitInterval);
this.autoCommitInterval);
} }
if (this.autoOffsetReset != null) { if (this.autoOffsetReset != null) {
properties.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, properties.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, this.autoOffsetReset);
this.autoOffsetReset);
} }
if (this.bootstrapServers != null) { if (this.bootstrapServers != null) {
properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, this.bootstrapServers);
this.bootstrapServers);
} }
if (this.clientId != null) { if (this.clientId != null) {
properties.put(ConsumerConfig.CLIENT_ID_CONFIG, this.clientId); properties.put(ConsumerConfig.CLIENT_ID_CONFIG, this.clientId);
} }
if (this.enableAutoCommit != null) { if (this.enableAutoCommit != null) {
properties.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, properties.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, this.enableAutoCommit);
this.enableAutoCommit);
} }
if (this.fetchMaxWait != null) { if (this.fetchMaxWait != null) {
properties.put(ConsumerConfig.FETCH_MAX_WAIT_MS_CONFIG, properties.put(ConsumerConfig.FETCH_MAX_WAIT_MS_CONFIG, this.fetchMaxWait);
this.fetchMaxWait);
} }
if (this.fetchMinSize != null) { if (this.fetchMinSize != null) {
properties.put(ConsumerConfig.FETCH_MIN_BYTES_CONFIG, this.fetchMinSize); properties.put(ConsumerConfig.FETCH_MIN_BYTES_CONFIG, this.fetchMinSize);
@ -393,40 +383,32 @@ public class KafkaProperties {
properties.put(ConsumerConfig.GROUP_ID_CONFIG, this.groupId); properties.put(ConsumerConfig.GROUP_ID_CONFIG, this.groupId);
} }
if (this.heartbeatInterval != null) { if (this.heartbeatInterval != null) {
properties.put(ConsumerConfig.HEARTBEAT_INTERVAL_MS_CONFIG, properties.put(ConsumerConfig.HEARTBEAT_INTERVAL_MS_CONFIG, this.heartbeatInterval);
this.heartbeatInterval);
} }
if (this.keyDeserializer != null) { if (this.keyDeserializer != null) {
properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, this.keyDeserializer);
this.keyDeserializer);
} }
if (this.ssl.getKeyPassword() != null) { if (this.ssl.getKeyPassword() != null) {
properties.put(SslConfigs.SSL_KEY_PASSWORD_CONFIG, properties.put(SslConfigs.SSL_KEY_PASSWORD_CONFIG, this.ssl.getKeyPassword());
this.ssl.getKeyPassword());
} }
if (this.ssl.getKeystoreLocation() != null) { if (this.ssl.getKeystoreLocation() != null) {
properties.put(SslConfigs.SSL_KEYSTORE_LOCATION_CONFIG, properties.put(SslConfigs.SSL_KEYSTORE_LOCATION_CONFIG, resourceToPath(this.ssl.getKeystoreLocation()));
resourceToPath(this.ssl.getKeystoreLocation()));
} }
if (this.ssl.getKeystorePassword() != null) { if (this.ssl.getKeystorePassword() != null) {
properties.put(SslConfigs.SSL_KEYSTORE_PASSWORD_CONFIG, properties.put(SslConfigs.SSL_KEYSTORE_PASSWORD_CONFIG, this.ssl.getKeystorePassword());
this.ssl.getKeystorePassword());
} }
if (this.ssl.getTruststoreLocation() != null) { if (this.ssl.getTruststoreLocation() != null) {
properties.put(SslConfigs.SSL_TRUSTSTORE_LOCATION_CONFIG, properties.put(SslConfigs.SSL_TRUSTSTORE_LOCATION_CONFIG,
resourceToPath(this.ssl.getTruststoreLocation())); resourceToPath(this.ssl.getTruststoreLocation()));
} }
if (this.ssl.getTruststorePassword() != null) { if (this.ssl.getTruststorePassword() != null) {
properties.put(SslConfigs.SSL_TRUSTSTORE_PASSWORD_CONFIG, properties.put(SslConfigs.SSL_TRUSTSTORE_PASSWORD_CONFIG, this.ssl.getTruststorePassword());
this.ssl.getTruststorePassword());
} }
if (this.valueDeserializer != null) { if (this.valueDeserializer != null) {
properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, this.valueDeserializer);
this.valueDeserializer);
} }
if (this.maxPollRecords != null) { if (this.maxPollRecords != null) {
properties.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, properties.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, this.maxPollRecords);
this.maxPollRecords);
} }
return properties; return properties;
} }
@ -444,8 +426,9 @@ public class KafkaProperties {
private String acks; private String acks;
/** /**
* Default batch size in bytes. A small batch size will make batching less common * Default batch size in bytes. A small batch size will make batching less
* and may reduce throughput (a batch size of zero disables batching entirely). * common and may reduce throughput (a batch size of zero disables batching
* entirely).
*/ */
private Integer batchSize; private Integer batchSize;
@ -456,8 +439,8 @@ public class KafkaProperties {
private List<String> bootstrapServers; private List<String> bootstrapServers;
/** /**
* Total bytes of memory the producer can use to buffer records waiting to be sent * Total bytes of memory the producer can use to buffer records waiting to be
* to the server. * sent to the server.
*/ */
private Long bufferMemory; private Long bufferMemory;
@ -571,8 +554,7 @@ public class KafkaProperties {
properties.put(ProducerConfig.BATCH_SIZE_CONFIG, this.batchSize); properties.put(ProducerConfig.BATCH_SIZE_CONFIG, this.batchSize);
} }
if (this.bootstrapServers != null) { if (this.bootstrapServers != null) {
properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, this.bootstrapServers);
this.bootstrapServers);
} }
if (this.bufferMemory != null) { if (this.bufferMemory != null) {
properties.put(ProducerConfig.BUFFER_MEMORY_CONFIG, this.bufferMemory); properties.put(ProducerConfig.BUFFER_MEMORY_CONFIG, this.bufferMemory);
@ -581,39 +563,32 @@ public class KafkaProperties {
properties.put(ProducerConfig.CLIENT_ID_CONFIG, this.clientId); properties.put(ProducerConfig.CLIENT_ID_CONFIG, this.clientId);
} }
if (this.compressionType != null) { if (this.compressionType != null) {
properties.put(ProducerConfig.COMPRESSION_TYPE_CONFIG, properties.put(ProducerConfig.COMPRESSION_TYPE_CONFIG, this.compressionType);
this.compressionType);
} }
if (this.keySerializer != null) { if (this.keySerializer != null) {
properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, this.keySerializer);
this.keySerializer);
} }
if (this.retries != null) { if (this.retries != null) {
properties.put(ProducerConfig.RETRIES_CONFIG, this.retries); properties.put(ProducerConfig.RETRIES_CONFIG, this.retries);
} }
if (this.ssl.getKeyPassword() != null) { if (this.ssl.getKeyPassword() != null) {
properties.put(SslConfigs.SSL_KEY_PASSWORD_CONFIG, properties.put(SslConfigs.SSL_KEY_PASSWORD_CONFIG, this.ssl.getKeyPassword());
this.ssl.getKeyPassword());
} }
if (this.ssl.getKeystoreLocation() != null) { if (this.ssl.getKeystoreLocation() != null) {
properties.put(SslConfigs.SSL_KEYSTORE_LOCATION_CONFIG, properties.put(SslConfigs.SSL_KEYSTORE_LOCATION_CONFIG, resourceToPath(this.ssl.getKeystoreLocation()));
resourceToPath(this.ssl.getKeystoreLocation()));
} }
if (this.ssl.getKeystorePassword() != null) { if (this.ssl.getKeystorePassword() != null) {
properties.put(SslConfigs.SSL_KEYSTORE_PASSWORD_CONFIG, properties.put(SslConfigs.SSL_KEYSTORE_PASSWORD_CONFIG, this.ssl.getKeystorePassword());
this.ssl.getKeystorePassword());
} }
if (this.ssl.getTruststoreLocation() != null) { if (this.ssl.getTruststoreLocation() != null) {
properties.put(SslConfigs.SSL_TRUSTSTORE_LOCATION_CONFIG, properties.put(SslConfigs.SSL_TRUSTSTORE_LOCATION_CONFIG,
resourceToPath(this.ssl.getTruststoreLocation())); resourceToPath(this.ssl.getTruststoreLocation()));
} }
if (this.ssl.getTruststorePassword() != null) { if (this.ssl.getTruststorePassword() != null) {
properties.put(SslConfigs.SSL_TRUSTSTORE_PASSWORD_CONFIG, properties.put(SslConfigs.SSL_TRUSTSTORE_PASSWORD_CONFIG, this.ssl.getTruststorePassword());
this.ssl.getTruststorePassword());
} }
if (this.valueSerializer != null) { if (this.valueSerializer != null) {
properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, this.valueSerializer);
this.valueSerializer);
} }
return properties; return properties;
} }

@ -43,7 +43,8 @@ import org.springframework.test.context.junit4.SpringRunner;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
/** /**
* Tests for {@link JerseyAutoConfiguration} when using a custom {@link Application}. * Tests for {@link JerseyAutoConfiguration} when using a custom
* {@link Application}.
* *
* @author Stephane Nicoll * @author Stephane Nicoll
*/ */
@ -52,14 +53,12 @@ import static org.assertj.core.api.Assertions.assertThat;
@DirtiesContext @DirtiesContext
public class JerseyAutoConfigurationCustomApplicationTests { public class JerseyAutoConfigurationCustomApplicationTests {
@Autowired @Autowired
private TestRestTemplate restTemplate; private TestRestTemplate restTemplate;
@Test @Test
public void contextLoads() { public void contextLoads() {
ResponseEntity<String> entity = this.restTemplate.getForEntity("/test/hello", ResponseEntity<String> entity = this.restTemplate.getForEntity("/test/hello", String.class);
String.class);
assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.OK);
} }
@ -79,9 +78,8 @@ public class JerseyAutoConfigurationCustomApplicationTests {
} }
@Configuration @Configuration
@Import({ EmbeddedServletContainerAutoConfiguration.class, @Import({ EmbeddedServletContainerAutoConfiguration.class, ServerPropertiesAutoConfiguration.class,
ServerPropertiesAutoConfiguration.class, JerseyAutoConfiguration.class, JerseyAutoConfiguration.class, PropertyPlaceholderAutoConfiguration.class })
PropertyPlaceholderAutoConfiguration.class })
static class TestConfiguration { static class TestConfiguration {
@Configuration @Configuration

@ -1,5 +1,5 @@
/* /*
* Copyright 2012-2017 the original author or authors. * Copyright 2012-2018 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

@ -338,7 +338,6 @@ public class ConfigurationMetadataAnnotationProcessor extends AbstractProcessor
return hasAnnotation(element, LOMBOK_DATA_ANNOTATION); return hasAnnotation(element, LOMBOK_DATA_ANNOTATION);
} }
private boolean isAccessLevelPublic(AnnotationMirror lombokAnnotation) { private boolean isAccessLevelPublic(AnnotationMirror lombokAnnotation) {
Map<String, Object> values = getAnnotationElementValues(lombokAnnotation); Map<String, Object> values = getAnnotationElementValues(lombokAnnotation);
Object value = values.get("value"); Object value = values.get("value");

@ -1,5 +1,5 @@
/* /*
* Copyright 2012-2017 the original author or authors. * Copyright 2012-2018 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -31,6 +31,7 @@ import org.springframework.boot.configurationsample.ConfigurationProperties;
*/ */
@Data @Data
@ConfigurationProperties(prefix = "accesslevel.overwrite.data") @ConfigurationProperties(prefix = "accesslevel.overwrite.data")
@SuppressWarnings("unused")
public class LombokAccessLevelOverwriteDataProperties { public class LombokAccessLevelOverwriteDataProperties {
private String name0; private String name0;

@ -31,6 +31,7 @@ import org.springframework.boot.configurationsample.ConfigurationProperties;
@Getter(AccessLevel.PUBLIC) @Getter(AccessLevel.PUBLIC)
@Setter(AccessLevel.PUBLIC) @Setter(AccessLevel.PUBLIC)
@ConfigurationProperties(prefix = "accesslevel.overwrite.explicit") @ConfigurationProperties(prefix = "accesslevel.overwrite.explicit")
@SuppressWarnings("unused")
public class LombokAccessLevelOverwriteExplicitProperties { public class LombokAccessLevelOverwriteExplicitProperties {
private String name0; private String name0;

@ -1,5 +1,5 @@
/* /*
* Copyright 2012-2014 the original author or authors. * Copyright 2012-2018 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

Loading…
Cancel
Save