Merge branch 'gh-408'
This commit is contained in:
commit
82a25ea7f8
|
@ -0,0 +1 @@
|
||||||
|
data
|
|
@ -186,6 +186,11 @@
|
||||||
<artifactId>spring-data-redis</artifactId>
|
<artifactId>spring-data-redis</artifactId>
|
||||||
<optional>true</optional>
|
<optional>true</optional>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.data</groupId>
|
||||||
|
<artifactId>spring-data-elasticsearch</artifactId>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.data</groupId>
|
<groupId>org.springframework.data</groupId>
|
||||||
<artifactId>spring-data-solr</artifactId>
|
<artifactId>spring-data-solr</artifactId>
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2012-2014 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.autoconfigure.data;
|
||||||
|
|
||||||
|
import org.elasticsearch.client.Client;
|
||||||
|
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.context.annotation.Import;
|
||||||
|
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
|
||||||
|
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
|
||||||
|
import org.springframework.data.elasticsearch.repository.support.ElasticsearchRepositoryFactoryBean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link EnableAutoConfiguration Auto-configuration} for Spring Data's Elasticsearch
|
||||||
|
* Repositories.
|
||||||
|
*
|
||||||
|
* @author Artur Konczak
|
||||||
|
* @author Mohsin Husen
|
||||||
|
* @see EnableElasticsearchRepositories
|
||||||
|
* @since 1.1.0
|
||||||
|
*/
|
||||||
|
@Configuration
|
||||||
|
@ConditionalOnClass({ Client.class, ElasticsearchRepository.class })
|
||||||
|
@ConditionalOnMissingBean(ElasticsearchRepositoryFactoryBean.class)
|
||||||
|
@Import(ElasticsearchRepositoriesAutoConfigureRegistrar.class)
|
||||||
|
public class ElasticsearchRepositoriesAutoConfiguration {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,57 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2012-2014 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.autoconfigure.data;
|
||||||
|
|
||||||
|
import java.lang.annotation.Annotation;
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
|
||||||
|
import org.springframework.data.elasticsearch.repository.config.ElasticsearchRepositoryConfigExtension;
|
||||||
|
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
|
||||||
|
import org.springframework.data.repository.config.RepositoryConfigurationExtension;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link ImportBeanDefinitionRegistrar} used to auto-configure Spring Data Elasticsearch
|
||||||
|
* Repositories.
|
||||||
|
*
|
||||||
|
* @author Artur Konczak
|
||||||
|
* @author Mohsin Husen
|
||||||
|
* @since 1.1.0
|
||||||
|
*/
|
||||||
|
class ElasticsearchRepositoriesAutoConfigureRegistrar extends
|
||||||
|
AbstractRepositoryConfigurationSourceSupport {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Class<? extends Annotation> getAnnotation() {
|
||||||
|
return EnableElasticsearchRepositories.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Class<?> getConfiguration() {
|
||||||
|
return EnableElasticsearchRepositoriesConfiguration.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected RepositoryConfigurationExtension getRepositoryConfigurationExtension() {
|
||||||
|
return new ElasticsearchRepositoryConfigExtension();
|
||||||
|
}
|
||||||
|
|
||||||
|
@EnableElasticsearchRepositories
|
||||||
|
private static class EnableElasticsearchRepositoriesConfiguration {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,74 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2012-2014 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.autoconfigure.elasticsearch;
|
||||||
|
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.elasticsearch.client.Client;
|
||||||
|
import org.springframework.beans.factory.DisposableBean;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link org.springframework.boot.autoconfigure.EnableAutoConfiguration
|
||||||
|
* Auto-configuration} for Elasticsearch.
|
||||||
|
*
|
||||||
|
* @author Artur Konczak
|
||||||
|
* @author Mohsin Husen
|
||||||
|
* @since 1.1.0
|
||||||
|
*/
|
||||||
|
@Configuration
|
||||||
|
@ConditionalOnClass(Client.class)
|
||||||
|
@EnableConfigurationProperties(ElasticsearchProperties.class)
|
||||||
|
public class ElasticsearchAutoConfiguration implements DisposableBean {
|
||||||
|
|
||||||
|
private static Log logger = LogFactory.getLog(ElasticsearchAutoConfiguration.class);
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ElasticsearchProperties properties;
|
||||||
|
|
||||||
|
private Client client;
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public Client elasticsearchClient() {
|
||||||
|
this.client = this.properties.createClient();
|
||||||
|
return this.client;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void destroy() throws Exception {
|
||||||
|
if (this.client != null) {
|
||||||
|
try {
|
||||||
|
if (logger.isInfoEnabled()) {
|
||||||
|
logger.info("Closing Elasticsearch client");
|
||||||
|
}
|
||||||
|
if (this.client != null) {
|
||||||
|
this.client.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (final Exception ex) {
|
||||||
|
if (logger.isErrorEnabled()) {
|
||||||
|
logger.error("Error closing Elasticsearch client: ", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2012-2014 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.autoconfigure.elasticsearch;
|
||||||
|
|
||||||
|
import org.elasticsearch.client.Client;
|
||||||
|
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
||||||
|
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
||||||
|
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link EnableAutoConfiguration Auto-configuration} for Spring Data's Elasticsearch
|
||||||
|
* support.
|
||||||
|
* <p>
|
||||||
|
* Registers a {@link ElasticsearchTemplate} if no other bean of the same type is
|
||||||
|
* configured.
|
||||||
|
*
|
||||||
|
* @author Artur Konczak
|
||||||
|
* @author Mohsin Husen
|
||||||
|
* @see EnableElasticsearchRepositories
|
||||||
|
* @since 1.1.0
|
||||||
|
*/
|
||||||
|
@Configuration
|
||||||
|
@ConditionalOnClass({ Client.class, ElasticsearchTemplate.class })
|
||||||
|
@AutoConfigureAfter(ElasticsearchAutoConfiguration.class)
|
||||||
|
public class ElasticsearchDataAutoConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@ConditionalOnMissingBean
|
||||||
|
public ElasticsearchTemplate elasticsearchTemplate(Client client) {
|
||||||
|
return new ElasticsearchTemplate(client);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,82 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2012-2014 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.autoconfigure.elasticsearch;
|
||||||
|
|
||||||
|
import org.elasticsearch.client.Client;
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
import org.springframework.data.elasticsearch.client.NodeClientFactoryBean;
|
||||||
|
import org.springframework.data.elasticsearch.client.TransportClientFactoryBean;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configuration properties for Elasticsearch.
|
||||||
|
*
|
||||||
|
* @author Artur Konczak
|
||||||
|
* @author Mohsin Husen
|
||||||
|
* @since 1.1.0
|
||||||
|
*/
|
||||||
|
@ConfigurationProperties(prefix = "spring.data.elasticsearch")
|
||||||
|
public class ElasticsearchProperties {
|
||||||
|
|
||||||
|
private String clusterName = "elasticsearch";
|
||||||
|
|
||||||
|
private String clusterNodes;
|
||||||
|
|
||||||
|
private boolean local = true;
|
||||||
|
|
||||||
|
public String getClusterName() {
|
||||||
|
return this.clusterName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClusterName(String clusterName) {
|
||||||
|
this.clusterName = clusterName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getClusterNodes() {
|
||||||
|
return this.clusterNodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClusterNodes(String clusterNodes) {
|
||||||
|
this.clusterNodes = clusterNodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Client createClient() {
|
||||||
|
try {
|
||||||
|
return (StringUtils.hasLength(this.clusterNodes) ? createTransportClient()
|
||||||
|
: createNodeClient());
|
||||||
|
}
|
||||||
|
catch (Exception ex) {
|
||||||
|
throw new IllegalStateException(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Client createNodeClient() throws Exception {
|
||||||
|
NodeClientFactoryBean factory = new NodeClientFactoryBean(this.local);
|
||||||
|
factory.setClusterName(this.clusterName);
|
||||||
|
factory.afterPropertiesSet();
|
||||||
|
return factory.getObject();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Client createTransportClient() throws Exception {
|
||||||
|
TransportClientFactoryBean factory = new TransportClientFactoryBean();
|
||||||
|
factory.setClusterName(this.clusterName);
|
||||||
|
factory.setClusterNodes(this.clusterNodes);
|
||||||
|
factory.afterPropertiesSet();
|
||||||
|
return factory.getObject();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -9,6 +9,7 @@ org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,\
|
||||||
org.springframework.boot.autoconfigure.MessageSourceAutoConfiguration,\
|
org.springframework.boot.autoconfigure.MessageSourceAutoConfiguration,\
|
||||||
org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration,\
|
org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration,\
|
||||||
org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration,\
|
org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration,\
|
||||||
|
org.springframework.boot.autoconfigure.data.ElasticsearchRepositoriesAutoConfiguration,\
|
||||||
org.springframework.boot.autoconfigure.data.JpaRepositoriesAutoConfiguration,\
|
org.springframework.boot.autoconfigure.data.JpaRepositoriesAutoConfiguration,\
|
||||||
org.springframework.boot.autoconfigure.data.MongoRepositoriesAutoConfiguration,\
|
org.springframework.boot.autoconfigure.data.MongoRepositoriesAutoConfiguration,\
|
||||||
org.springframework.boot.autoconfigure.data.SolrRepositoriesAutoConfiguration,\
|
org.springframework.boot.autoconfigure.data.SolrRepositoriesAutoConfiguration,\
|
||||||
|
@ -22,6 +23,8 @@ org.springframework.boot.autoconfigure.jms.ActiveMQAutoConfiguration,\
|
||||||
org.springframework.boot.autoconfigure.jms.HornetQAutoConfiguration,\
|
org.springframework.boot.autoconfigure.jms.HornetQAutoConfiguration,\
|
||||||
org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration,\
|
org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration,\
|
||||||
org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration,\
|
org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration,\
|
||||||
|
org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchAutoConfiguration,\
|
||||||
|
org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchDataAutoConfiguration,\
|
||||||
org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration,\
|
org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration,\
|
||||||
org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAutoConfiguration,\
|
org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAutoConfiguration,\
|
||||||
org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration,\
|
org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration,\
|
||||||
|
|
|
@ -18,11 +18,12 @@ package org.springframework.boot.autoconfigure.data;
|
||||||
|
|
||||||
import javax.persistence.EntityManagerFactory;
|
import javax.persistence.EntityManagerFactory;
|
||||||
|
|
||||||
|
import org.junit.After;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
|
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage;
|
import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage;
|
||||||
import org.springframework.boot.autoconfigure.data.alt.CityMongoDbRepository;
|
import org.springframework.boot.autoconfigure.data.alt.mongo.CityMongoDbRepository;
|
||||||
import org.springframework.boot.autoconfigure.data.alt.CitySolrRepository;
|
import org.springframework.boot.autoconfigure.data.alt.solr.CitySolrRepository;
|
||||||
import org.springframework.boot.autoconfigure.data.jpa.City;
|
import org.springframework.boot.autoconfigure.data.jpa.City;
|
||||||
import org.springframework.boot.autoconfigure.data.jpa.CityRepository;
|
import org.springframework.boot.autoconfigure.data.jpa.CityRepository;
|
||||||
import org.springframework.boot.autoconfigure.jdbc.EmbeddedDataSourceConfiguration;
|
import org.springframework.boot.autoconfigure.jdbc.EmbeddedDataSourceConfiguration;
|
||||||
|
@ -46,6 +47,11 @@ public class JpaRepositoriesAutoConfigurationTests {
|
||||||
|
|
||||||
private AnnotationConfigApplicationContext context;
|
private AnnotationConfigApplicationContext context;
|
||||||
|
|
||||||
|
@After
|
||||||
|
public void close() {
|
||||||
|
this.context.close();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDefaultRepositoryConfiguration() throws Exception {
|
public void testDefaultRepositoryConfiguration() throws Exception {
|
||||||
this.context = new AnnotationConfigApplicationContext();
|
this.context = new AnnotationConfigApplicationContext();
|
||||||
|
@ -70,7 +76,7 @@ public class JpaRepositoriesAutoConfigurationTests {
|
||||||
PropertyPlaceholderAutoConfiguration.class);
|
PropertyPlaceholderAutoConfiguration.class);
|
||||||
this.context.refresh();
|
this.context.refresh();
|
||||||
assertNotNull(this.context
|
assertNotNull(this.context
|
||||||
.getBean(org.springframework.boot.autoconfigure.data.alt.CityJpaRepository.class));
|
.getBean(org.springframework.boot.autoconfigure.data.alt.jpa.CityJpaRepository.class));
|
||||||
assertNotNull(this.context.getBean(PlatformTransactionManager.class));
|
assertNotNull(this.context.getBean(PlatformTransactionManager.class));
|
||||||
assertNotNull(this.context.getBean(EntityManagerFactory.class));
|
assertNotNull(this.context.getBean(EntityManagerFactory.class));
|
||||||
}
|
}
|
||||||
|
@ -82,7 +88,7 @@ public class JpaRepositoriesAutoConfigurationTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@EnableJpaRepositories(basePackageClasses = org.springframework.boot.autoconfigure.data.alt.CityJpaRepository.class, excludeFilters = {
|
@EnableJpaRepositories(basePackageClasses = org.springframework.boot.autoconfigure.data.alt.jpa.CityJpaRepository.class, excludeFilters = {
|
||||||
@Filter(type = FilterType.ASSIGNABLE_TYPE, value = CityMongoDbRepository.class),
|
@Filter(type = FilterType.ASSIGNABLE_TYPE, value = CityMongoDbRepository.class),
|
||||||
@Filter(type = FilterType.ASSIGNABLE_TYPE, value = CitySolrRepository.class) })
|
@Filter(type = FilterType.ASSIGNABLE_TYPE, value = CitySolrRepository.class) })
|
||||||
@TestAutoConfigurationPackage(City.class)
|
@TestAutoConfigurationPackage(City.class)
|
||||||
|
|
|
@ -16,9 +16,11 @@
|
||||||
|
|
||||||
package org.springframework.boot.autoconfigure.data;
|
package org.springframework.boot.autoconfigure.data;
|
||||||
|
|
||||||
|
import org.junit.After;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
|
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage;
|
import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage;
|
||||||
|
import org.springframework.boot.autoconfigure.data.JpaRepositoriesAutoConfiguration.JpaWebConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.data.jpa.City;
|
import org.springframework.boot.autoconfigure.data.jpa.City;
|
||||||
import org.springframework.boot.autoconfigure.data.jpa.CityRepository;
|
import org.springframework.boot.autoconfigure.data.jpa.CityRepository;
|
||||||
import org.springframework.boot.autoconfigure.jdbc.EmbeddedDataSourceConfiguration;
|
import org.springframework.boot.autoconfigure.jdbc.EmbeddedDataSourceConfiguration;
|
||||||
|
@ -34,12 +36,19 @@ import static org.junit.Assert.assertNotNull;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Tests for {@link JpaWebConfiguration}.
|
||||||
|
*
|
||||||
* @author Dave Syer
|
* @author Dave Syer
|
||||||
*/
|
*/
|
||||||
public class JpaWebAutoConfigurationTests {
|
public class JpaWebAutoConfigurationTests {
|
||||||
|
|
||||||
private AnnotationConfigWebApplicationContext context;
|
private AnnotationConfigWebApplicationContext context;
|
||||||
|
|
||||||
|
@After
|
||||||
|
public void close() {
|
||||||
|
this.context.close();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDefaultRepositoryConfiguration() throws Exception {
|
public void testDefaultRepositoryConfiguration() throws Exception {
|
||||||
this.context = new AnnotationConfigWebApplicationContext();
|
this.context = new AnnotationConfigWebApplicationContext();
|
||||||
|
|
|
@ -16,10 +16,12 @@
|
||||||
|
|
||||||
package org.springframework.boot.autoconfigure.data;
|
package org.springframework.boot.autoconfigure.data;
|
||||||
|
|
||||||
|
import org.junit.After;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
|
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage;
|
import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage;
|
||||||
import org.springframework.boot.autoconfigure.data.alt.CityMongoDbRepository;
|
import org.springframework.boot.autoconfigure.data.alt.mongo.CityMongoDbRepository;
|
||||||
|
import org.springframework.boot.autoconfigure.data.empty.EmptyDataPackage;
|
||||||
import org.springframework.boot.autoconfigure.data.mongo.City;
|
import org.springframework.boot.autoconfigure.data.mongo.City;
|
||||||
import org.springframework.boot.autoconfigure.data.mongo.CityRepository;
|
import org.springframework.boot.autoconfigure.data.mongo.CityRepository;
|
||||||
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
|
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
|
||||||
|
@ -46,6 +48,11 @@ public class MongoRepositoriesAutoConfigurationTests {
|
||||||
|
|
||||||
private AnnotationConfigApplicationContext context;
|
private AnnotationConfigApplicationContext context;
|
||||||
|
|
||||||
|
@After
|
||||||
|
public void close() {
|
||||||
|
this.context.close();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDefaultRepositoryConfiguration() throws Exception {
|
public void testDefaultRepositoryConfiguration() throws Exception {
|
||||||
this.context = new AnnotationConfigApplicationContext();
|
this.context = new AnnotationConfigApplicationContext();
|
||||||
|
@ -91,7 +98,7 @@ public class MongoRepositoriesAutoConfigurationTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@TestAutoConfigurationPackage(MongoRepositoriesAutoConfigurationTests.class)
|
@TestAutoConfigurationPackage(EmptyDataPackage.class)
|
||||||
protected static class EmptyConfiguration {
|
protected static class EmptyConfiguration {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,10 +18,12 @@ package org.springframework.boot.autoconfigure.data;
|
||||||
|
|
||||||
import org.apache.solr.client.solrj.SolrServer;
|
import org.apache.solr.client.solrj.SolrServer;
|
||||||
import org.apache.solr.client.solrj.impl.HttpSolrServer;
|
import org.apache.solr.client.solrj.impl.HttpSolrServer;
|
||||||
|
import org.junit.After;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
|
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage;
|
import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage;
|
||||||
import org.springframework.boot.autoconfigure.data.alt.CitySolrRepository;
|
import org.springframework.boot.autoconfigure.data.alt.solr.CitySolrRepository;
|
||||||
|
import org.springframework.boot.autoconfigure.data.empty.EmptyDataPackage;
|
||||||
import org.springframework.boot.autoconfigure.data.solr.City;
|
import org.springframework.boot.autoconfigure.data.solr.City;
|
||||||
import org.springframework.boot.autoconfigure.data.solr.CityRepository;
|
import org.springframework.boot.autoconfigure.data.solr.CityRepository;
|
||||||
import org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration;
|
import org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration;
|
||||||
|
@ -42,6 +44,11 @@ public class SolrRepositoriesAutoConfigurationTests {
|
||||||
|
|
||||||
private AnnotationConfigApplicationContext context;
|
private AnnotationConfigApplicationContext context;
|
||||||
|
|
||||||
|
@After
|
||||||
|
public void close() {
|
||||||
|
this.context.close();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDefaultRepositoryConfiguration() {
|
public void testDefaultRepositoryConfiguration() {
|
||||||
initContext(TestConfiguration.class);
|
initContext(TestConfiguration.class);
|
||||||
|
@ -80,7 +87,7 @@ public class SolrRepositoriesAutoConfigurationTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@TestAutoConfigurationPackage(SolrRepositoriesAutoConfigurationTests.class)
|
@TestAutoConfigurationPackage(EmptyDataPackage.class)
|
||||||
static class EmptyConfiguration {
|
static class EmptyConfiguration {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,24 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2012-2014 the original author or authors.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.springframework.boot.autoconfigure.data.alt;
|
|
||||||
|
|
||||||
import org.springframework.boot.autoconfigure.data.mongo.City;
|
|
||||||
import org.springframework.data.repository.Repository;
|
|
||||||
|
|
||||||
public interface CityMongoDbRepository extends Repository<City, Long> {
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2012-2014 the original author or authors.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.springframework.boot.autoconfigure.data.alt;
|
|
||||||
|
|
||||||
import org.springframework.boot.autoconfigure.data.solr.City;
|
|
||||||
import org.springframework.data.repository.Repository;
|
|
||||||
|
|
||||||
public interface CitySolrRepository extends Repository<City, String> {
|
|
||||||
|
|
||||||
}
|
|
|
@ -0,0 +1,76 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2012-2014 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.autoconfigure.elasticsearch;
|
||||||
|
|
||||||
|
import org.elasticsearch.client.Client;
|
||||||
|
import org.elasticsearch.client.node.NodeClient;
|
||||||
|
import org.junit.After;
|
||||||
|
import org.junit.Rule;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.rules.ExpectedException;
|
||||||
|
import org.springframework.beans.factory.BeanCreationException;
|
||||||
|
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
|
||||||
|
import org.springframework.boot.test.EnvironmentTestUtils;
|
||||||
|
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.instanceOf;
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertThat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests for {@link ElasticsearchAutoConfiguration}.
|
||||||
|
*
|
||||||
|
* @author Phillip Webb
|
||||||
|
*/
|
||||||
|
public class ElasticsearchAutoConfigurationTests {
|
||||||
|
|
||||||
|
@Rule
|
||||||
|
public ExpectedException thrown = ExpectedException.none();
|
||||||
|
|
||||||
|
private AnnotationConfigApplicationContext context;
|
||||||
|
|
||||||
|
@After
|
||||||
|
public void close() {
|
||||||
|
if (this.context != null) {
|
||||||
|
this.context.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void createNodeClient() {
|
||||||
|
this.context = new AnnotationConfigApplicationContext(
|
||||||
|
PropertyPlaceholderAutoConfiguration.class,
|
||||||
|
ElasticsearchAutoConfiguration.class);
|
||||||
|
assertEquals(1, this.context.getBeanNamesForType(Client.class).length);
|
||||||
|
assertThat(this.context.getBean(Client.class), instanceOf(NodeClient.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void createTransportClient() throws Exception {
|
||||||
|
// We don't have a local elasticsearch server so use an address that's missing
|
||||||
|
// a port and check the exception
|
||||||
|
this.context = new AnnotationConfigApplicationContext();
|
||||||
|
EnvironmentTestUtils.addEnvironment(this.context,
|
||||||
|
"spring.data.elasticsearch.cluster-nodes:localhost");
|
||||||
|
this.context.register(PropertyPlaceholderAutoConfiguration.class,
|
||||||
|
ElasticsearchAutoConfiguration.class);
|
||||||
|
this.thrown.expect(BeanCreationException.class);
|
||||||
|
this.thrown.expectMessage("port");
|
||||||
|
this.context.refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2012-2014 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.autoconfigure.elasticsearch;
|
||||||
|
|
||||||
|
import org.junit.After;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
|
||||||
|
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||||
|
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests for {@link ElasticsearchDataAutoConfiguration}.
|
||||||
|
*
|
||||||
|
* @author Phillip Webb
|
||||||
|
*/
|
||||||
|
public class ElasticsearchDataAutoConfigurationTests {
|
||||||
|
|
||||||
|
private AnnotationConfigApplicationContext context;
|
||||||
|
|
||||||
|
@After
|
||||||
|
public void close() {
|
||||||
|
if (this.context != null) {
|
||||||
|
this.context.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void templateExists() {
|
||||||
|
this.context = new AnnotationConfigApplicationContext(
|
||||||
|
PropertyPlaceholderAutoConfiguration.class,
|
||||||
|
ElasticsearchAutoConfiguration.class,
|
||||||
|
ElasticsearchDataAutoConfiguration.class);
|
||||||
|
assertEquals(1,
|
||||||
|
this.context.getBeanNamesForType(ElasticsearchTemplate.class).length);
|
||||||
|
}
|
||||||
|
}
|
|
@ -182,6 +182,11 @@
|
||||||
<artifactId>spring-boot-starter-batch</artifactId>
|
<artifactId>spring-boot-starter-batch</artifactId>
|
||||||
<version>1.1.0.BUILD-SNAPSHOT</version>
|
<version>1.1.0.BUILD-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
|
||||||
|
<version>1.1.0.BUILD-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-data-gemfire</artifactId>
|
<artifactId>spring-boot-starter-data-gemfire</artifactId>
|
||||||
|
|
|
@ -196,6 +196,11 @@ content into your application; rather pick only the properties that you need.
|
||||||
spring.data.solr.host=http://127.0.0.1:8983/solr
|
spring.data.solr.host=http://127.0.0.1:8983/solr
|
||||||
spring.data.solr.zkHost=
|
spring.data.solr.zkHost=
|
||||||
|
|
||||||
|
# ELASTICSEARCH ({sc-spring-boot-autoconfigure}/elasticsearch/ElasticsearchProperties.{sc-ext}[ElasticsearchProperties}])
|
||||||
|
spring.data.elasticsearch.cluster-name= # The cluster name (defaults to elasticsearch)
|
||||||
|
spring.data.elasticsearch.cluster-node= # The address of the server node (if not specified starts a client node)
|
||||||
|
spring.data.elasticsearch.local=true # if local mode should be used with client nodes
|
||||||
|
|
||||||
# FLYWAY ({sc-spring-boot-autoconfigure}/flyway/FlywayProperties.{sc-ext}[FlywayProperties])
|
# FLYWAY ({sc-spring-boot-autoconfigure}/flyway/FlywayProperties.{sc-ext}[FlywayProperties])
|
||||||
flyway.locations=classpath:db/migrations # locations of migrations scripts
|
flyway.locations=classpath:db/migrations # locations of migrations scripts
|
||||||
flyway.schemas= # schemas to update
|
flyway.schemas= # schemas to update
|
||||||
|
|
|
@ -35,9 +35,15 @@ The following auto-configuration classes are from the `spring-boot-autoconfigure
|
||||||
|{sc-spring-boot-autoconfigure}/web/DispatcherServletAutoConfiguration.{sc-ext}[DispatcherServletAutoConfiguration]
|
|{sc-spring-boot-autoconfigure}/web/DispatcherServletAutoConfiguration.{sc-ext}[DispatcherServletAutoConfiguration]
|
||||||
|{dc-spring-boot-autoconfigure}/web/DispatcherServletAutoConfiguration.{dc-ext}[javadoc]
|
|{dc-spring-boot-autoconfigure}/web/DispatcherServletAutoConfiguration.{dc-ext}[javadoc]
|
||||||
|
|
||||||
|
|{sc-spring-boot-autoconfigure}/elasticsearch/ElasticsearchAutoConfiguration.{sc-ext}[ElasticsearchAutoConfiguration]
|
||||||
|
|{dc-spring-boot-autoconfigure}/elasticsearch/ElasticsearchAutoConfiguration.{dc-ext}[javadoc]
|
||||||
|
|
||||||
|{sc-spring-boot-autoconfigure}/web/EmbeddedServletContainerAutoConfiguration.{sc-ext}[EmbeddedServletContainerAutoConfiguration]
|
|{sc-spring-boot-autoconfigure}/web/EmbeddedServletContainerAutoConfiguration.{sc-ext}[EmbeddedServletContainerAutoConfiguration]
|
||||||
|{dc-spring-boot-autoconfigure}/web/EmbeddedServletContainerAutoConfiguration.{dc-ext}[javadoc]
|
|{dc-spring-boot-autoconfigure}/web/EmbeddedServletContainerAutoConfiguration.{dc-ext}[javadoc]
|
||||||
|
|
||||||
|
|{sc-spring-boot-autoconfigure}/data/ElasticsearchRepositoriesAutoConfiguration.{sc-ext}[ElasticsearchRepositoriesAutoConfiguration]
|
||||||
|
|{dc-spring-boot-autoconfigure}/data/ElasticsearchRepositoriesAutoConfiguration.{dc-ext}[javadoc]
|
||||||
|
|
||||||
|{sc-spring-boot-autoconfigure}/social/FacebookAutoConfiguration.{sc-ext}[FacebookAutoConfiguration]
|
|{sc-spring-boot-autoconfigure}/social/FacebookAutoConfiguration.{sc-ext}[FacebookAutoConfiguration]
|
||||||
|{dc-spring-boot-autoconfigure}/social/FacebookAutoConfiguration.{dc-ext}[javadoc]
|
|{dc-spring-boot-autoconfigure}/social/FacebookAutoConfiguration.{dc-ext}[javadoc]
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
<module>spring-boot-sample-amqp</module>
|
<module>spring-boot-sample-amqp</module>
|
||||||
<module>spring-boot-sample-aop</module>
|
<module>spring-boot-sample-aop</module>
|
||||||
<module>spring-boot-sample-batch</module>
|
<module>spring-boot-sample-batch</module>
|
||||||
|
<module>spring-boot-sample-data-elasticsearch</module>
|
||||||
<module>spring-boot-sample-data-gemfire</module>
|
<module>spring-boot-sample-data-gemfire</module>
|
||||||
<module>spring-boot-sample-data-jpa</module>
|
<module>spring-boot-sample-data-jpa</module>
|
||||||
<module>spring-boot-sample-data-mongodb</module>
|
<module>spring-boot-sample-data-mongodb</module>
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
data
|
|
@ -0,0 +1,39 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<!-- Your own application should inherit from spring-boot-starter-parent -->
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-samples</artifactId>
|
||||||
|
<version>1.1.0.BUILD-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
<artifactId>spring-boot-sample-data-gemfire</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<properties>
|
||||||
|
<main.basedir>${basedir}/../..</main.basedir>
|
||||||
|
</properties>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
|
@ -0,0 +1,70 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2012-2013 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package sample.data.elasticsearch;
|
||||||
|
|
||||||
|
import org.springframework.data.annotation.Id;
|
||||||
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
|
|
||||||
|
@Document(indexName = "customer", type = "customer", shards = 1, replicas = 0, refreshInterval = "-1")
|
||||||
|
public class Customer {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
private String firstName;
|
||||||
|
|
||||||
|
private String lastName;
|
||||||
|
|
||||||
|
public Customer() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public Customer(String firstName, String lastName) {
|
||||||
|
this.firstName = firstName;
|
||||||
|
this.lastName = lastName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return this.id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFirstName() {
|
||||||
|
return this.firstName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFirstName(String firstName) {
|
||||||
|
this.firstName = firstName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLastName() {
|
||||||
|
return this.lastName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLastName(String lastName) {
|
||||||
|
this.lastName = lastName;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return String.format("Customer[id=%s, firstName='%s', lastName='%s']", this.id,
|
||||||
|
this.firstName, this.lastName);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2014 the original author or authors.
|
* Copyright 2012-2013 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.
|
||||||
|
@ -14,11 +14,16 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.springframework.boot.autoconfigure.data.alt;
|
package sample.data.elasticsearch;
|
||||||
|
|
||||||
import org.springframework.boot.autoconfigure.data.jpa.City;
|
import java.util.List;
|
||||||
import org.springframework.data.repository.Repository;
|
|
||||||
|
|
||||||
public interface CityJpaRepository extends Repository<City, Long> {
|
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
|
||||||
|
|
||||||
|
public interface CustomerRepository extends ElasticsearchRepository<Customer, String> {
|
||||||
|
|
||||||
|
public Customer findByFirstName(String firstName);
|
||||||
|
|
||||||
|
public List<Customer> findByLastName(String lastName);
|
||||||
|
|
||||||
}
|
}
|
|
@ -0,0 +1,71 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2012-2013 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package sample.data.elasticsearch;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.CommandLineRunner;
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||||
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@EnableAutoConfiguration
|
||||||
|
@ComponentScan
|
||||||
|
public class SampleElasticsearchApplication implements CommandLineRunner {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CustomerRepository repository;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run(String... args) throws Exception {
|
||||||
|
this.repository.deleteAll();
|
||||||
|
saveCustomers();
|
||||||
|
fetchAllCustomers();
|
||||||
|
fetchIndividualCustomers();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void saveCustomers() {
|
||||||
|
this.repository.save(new Customer("Alice", "Smith"));
|
||||||
|
this.repository.save(new Customer("Bob", "Smith"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void fetchAllCustomers() {
|
||||||
|
System.out.println("Customers found with findAll():");
|
||||||
|
System.out.println("-------------------------------");
|
||||||
|
for (Customer customer : this.repository.findAll()) {
|
||||||
|
System.out.println(customer);
|
||||||
|
}
|
||||||
|
System.out.println();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void fetchIndividualCustomers() {
|
||||||
|
System.out.println("Customer found with findByFirstName('Alice'):");
|
||||||
|
System.out.println("--------------------------------");
|
||||||
|
System.out.println(this.repository.findByFirstName("Alice"));
|
||||||
|
|
||||||
|
System.out.println("Customers found with findByLastName('Smith'):");
|
||||||
|
System.out.println("--------------------------------");
|
||||||
|
for (Customer customer : this.repository.findByLastName("Smith")) {
|
||||||
|
System.out.println(customer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
SpringApplication.run(SampleElasticsearchApplication.class, "--debug");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,66 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2012-2014 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package sample.data.elasticsearch;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
import java.net.ConnectException;
|
||||||
|
|
||||||
|
import org.junit.Rule;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.springframework.boot.test.OutputCapture;
|
||||||
|
import org.springframework.core.NestedCheckedException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests for {@link SampleElasticsearchApplication}.
|
||||||
|
*
|
||||||
|
* @author Artur Konczak
|
||||||
|
*/
|
||||||
|
public class SampleElasticsearchApplicationTests {
|
||||||
|
|
||||||
|
@Rule
|
||||||
|
public OutputCapture outputCapture = new OutputCapture();
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDefaultSettings() throws Exception {
|
||||||
|
try {
|
||||||
|
SampleElasticsearchApplication.main(new String[0]);
|
||||||
|
}
|
||||||
|
catch (IllegalStateException ex) {
|
||||||
|
if (serverNotRunning(ex)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String output = this.outputCapture.toString();
|
||||||
|
assertTrue("Wrong output: " + output,
|
||||||
|
output.contains("firstName='Alice', lastName='Smith'"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean serverNotRunning(IllegalStateException ex) {
|
||||||
|
@SuppressWarnings("serial")
|
||||||
|
NestedCheckedException nested = new NestedCheckedException("failed", ex) {
|
||||||
|
};
|
||||||
|
if (nested.contains(ConnectException.class)) {
|
||||||
|
Throwable root = nested.getRootCause();
|
||||||
|
if (root.getMessage().contains("Connection refused")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -24,6 +24,7 @@
|
||||||
<module>spring-boot-starter-amqp</module>
|
<module>spring-boot-starter-amqp</module>
|
||||||
<module>spring-boot-starter-aop</module>
|
<module>spring-boot-starter-aop</module>
|
||||||
<module>spring-boot-starter-batch</module>
|
<module>spring-boot-starter-batch</module>
|
||||||
|
<module>spring-boot-starter-data-elasticsearch</module>
|
||||||
<module>spring-boot-starter-data-gemfire</module>
|
<module>spring-boot-starter-data-gemfire</module>
|
||||||
<module>spring-boot-starter-data-jpa</module>
|
<module>spring-boot-starter-data-jpa</module>
|
||||||
<module>spring-boot-starter-data-mongodb</module>
|
<module>spring-boot-starter-data-mongodb</module>
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starters</artifactId>
|
||||||
|
<version>1.1.0.BUILD-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<properties>
|
||||||
|
<main.basedir>${basedir}/../..</main.basedir>
|
||||||
|
</properties>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>${project.groupId}</groupId>
|
||||||
|
<artifactId>spring-boot-starter</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.data</groupId>
|
||||||
|
<artifactId>spring-data-elasticsearch</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
|
@ -0,0 +1 @@
|
||||||
|
provides: spring-data-elasticsearch
|
Loading…
Reference in New Issue