Merge branch 'gh-408'
This commit is contained in:
		
						commit
						82a25ea7f8
					
				| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
data
 | 
			
		||||
| 
						 | 
				
			
			@ -186,6 +186,11 @@
 | 
			
		|||
			<artifactId>spring-data-redis</artifactId>
 | 
			
		||||
			<optional>true</optional>
 | 
			
		||||
		</dependency>
 | 
			
		||||
		<dependency>
 | 
			
		||||
			<groupId>org.springframework.data</groupId>
 | 
			
		||||
			<artifactId>spring-data-elasticsearch</artifactId>
 | 
			
		||||
			<optional>true</optional>
 | 
			
		||||
        </dependency>
 | 
			
		||||
		<dependency>
 | 
			
		||||
			<groupId>org.springframework.data</groupId>
 | 
			
		||||
			<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.PropertyPlaceholderAutoConfiguration,\
 | 
			
		||||
org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration,\
 | 
			
		||||
org.springframework.boot.autoconfigure.data.ElasticsearchRepositoriesAutoConfiguration,\
 | 
			
		||||
org.springframework.boot.autoconfigure.data.JpaRepositoriesAutoConfiguration,\
 | 
			
		||||
org.springframework.boot.autoconfigure.data.MongoRepositoriesAutoConfiguration,\
 | 
			
		||||
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.JmsAutoConfiguration,\
 | 
			
		||||
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.groovy.template.GroovyTemplateAutoConfiguration,\
 | 
			
		||||
org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration,\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,11 +18,12 @@ package org.springframework.boot.autoconfigure.data;
 | 
			
		|||
 | 
			
		||||
import javax.persistence.EntityManagerFactory;
 | 
			
		||||
 | 
			
		||||
import org.junit.After;
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
 | 
			
		||||
import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage;
 | 
			
		||||
import org.springframework.boot.autoconfigure.data.alt.CityMongoDbRepository;
 | 
			
		||||
import org.springframework.boot.autoconfigure.data.alt.CitySolrRepository;
 | 
			
		||||
import org.springframework.boot.autoconfigure.data.alt.mongo.CityMongoDbRepository;
 | 
			
		||||
import org.springframework.boot.autoconfigure.data.alt.solr.CitySolrRepository;
 | 
			
		||||
import org.springframework.boot.autoconfigure.data.jpa.City;
 | 
			
		||||
import org.springframework.boot.autoconfigure.data.jpa.CityRepository;
 | 
			
		||||
import org.springframework.boot.autoconfigure.jdbc.EmbeddedDataSourceConfiguration;
 | 
			
		||||
| 
						 | 
				
			
			@ -46,6 +47,11 @@ public class JpaRepositoriesAutoConfigurationTests {
 | 
			
		|||
 | 
			
		||||
	private AnnotationConfigApplicationContext context;
 | 
			
		||||
 | 
			
		||||
	@After
 | 
			
		||||
	public void close() {
 | 
			
		||||
		this.context.close();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Test
 | 
			
		||||
	public void testDefaultRepositoryConfiguration() throws Exception {
 | 
			
		||||
		this.context = new AnnotationConfigApplicationContext();
 | 
			
		||||
| 
						 | 
				
			
			@ -70,7 +76,7 @@ public class JpaRepositoriesAutoConfigurationTests {
 | 
			
		|||
				PropertyPlaceholderAutoConfiguration.class);
 | 
			
		||||
		this.context.refresh();
 | 
			
		||||
		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(EntityManagerFactory.class));
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -82,7 +88,7 @@ public class JpaRepositoriesAutoConfigurationTests {
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	@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 = CitySolrRepository.class) })
 | 
			
		||||
	@TestAutoConfigurationPackage(City.class)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,9 +16,11 @@
 | 
			
		|||
 | 
			
		||||
package org.springframework.boot.autoconfigure.data;
 | 
			
		||||
 | 
			
		||||
import org.junit.After;
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
 | 
			
		||||
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.CityRepository;
 | 
			
		||||
import org.springframework.boot.autoconfigure.jdbc.EmbeddedDataSourceConfiguration;
 | 
			
		||||
| 
						 | 
				
			
			@ -34,12 +36,19 @@ import static org.junit.Assert.assertNotNull;
 | 
			
		|||
import static org.junit.Assert.assertTrue;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Tests for {@link JpaWebConfiguration}.
 | 
			
		||||
 * 
 | 
			
		||||
 * @author Dave Syer
 | 
			
		||||
 */
 | 
			
		||||
public class JpaWebAutoConfigurationTests {
 | 
			
		||||
 | 
			
		||||
	private AnnotationConfigWebApplicationContext context;
 | 
			
		||||
 | 
			
		||||
	@After
 | 
			
		||||
	public void close() {
 | 
			
		||||
		this.context.close();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Test
 | 
			
		||||
	public void testDefaultRepositoryConfiguration() throws Exception {
 | 
			
		||||
		this.context = new AnnotationConfigWebApplicationContext();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,10 +16,12 @@
 | 
			
		|||
 | 
			
		||||
package org.springframework.boot.autoconfigure.data;
 | 
			
		||||
 | 
			
		||||
import org.junit.After;
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
 | 
			
		||||
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.CityRepository;
 | 
			
		||||
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
 | 
			
		||||
| 
						 | 
				
			
			@ -46,6 +48,11 @@ public class MongoRepositoriesAutoConfigurationTests {
 | 
			
		|||
 | 
			
		||||
	private AnnotationConfigApplicationContext context;
 | 
			
		||||
 | 
			
		||||
	@After
 | 
			
		||||
	public void close() {
 | 
			
		||||
		this.context.close();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Test
 | 
			
		||||
	public void testDefaultRepositoryConfiguration() throws Exception {
 | 
			
		||||
		this.context = new AnnotationConfigApplicationContext();
 | 
			
		||||
| 
						 | 
				
			
			@ -91,7 +98,7 @@ public class MongoRepositoriesAutoConfigurationTests {
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	@Configuration
 | 
			
		||||
	@TestAutoConfigurationPackage(MongoRepositoriesAutoConfigurationTests.class)
 | 
			
		||||
	@TestAutoConfigurationPackage(EmptyDataPackage.class)
 | 
			
		||||
	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.impl.HttpSolrServer;
 | 
			
		||||
import org.junit.After;
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
 | 
			
		||||
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.CityRepository;
 | 
			
		||||
import org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration;
 | 
			
		||||
| 
						 | 
				
			
			@ -42,6 +44,11 @@ public class SolrRepositoriesAutoConfigurationTests {
 | 
			
		|||
 | 
			
		||||
	private AnnotationConfigApplicationContext context;
 | 
			
		||||
 | 
			
		||||
	@After
 | 
			
		||||
	public void close() {
 | 
			
		||||
		this.context.close();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Test
 | 
			
		||||
	public void testDefaultRepositoryConfiguration() {
 | 
			
		||||
		initContext(TestConfiguration.class);
 | 
			
		||||
| 
						 | 
				
			
			@ -80,7 +87,7 @@ public class SolrRepositoriesAutoConfigurationTests {
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	@Configuration
 | 
			
		||||
	@TestAutoConfigurationPackage(SolrRepositoriesAutoConfigurationTests.class)
 | 
			
		||||
	@TestAutoConfigurationPackage(EmptyDataPackage.class)
 | 
			
		||||
	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>
 | 
			
		||||
				<version>1.1.0.BUILD-SNAPSHOT</version>
 | 
			
		||||
			</dependency>
 | 
			
		||||
			<dependency>
 | 
			
		||||
				<groupId>org.springframework.boot</groupId>
 | 
			
		||||
				<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
 | 
			
		||||
				<version>1.1.0.BUILD-SNAPSHOT</version>
 | 
			
		||||
			</dependency>
 | 
			
		||||
			<dependency>
 | 
			
		||||
				<groupId>org.springframework.boot</groupId>
 | 
			
		||||
				<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.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.locations=classpath:db/migrations # locations of migrations scripts
 | 
			
		||||
	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]
 | 
			
		||||
|{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]
 | 
			
		||||
|{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]
 | 
			
		||||
|{dc-spring-boot-autoconfigure}/social/FacebookAutoConfiguration.{dc-ext}[javadoc]
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,6 +27,7 @@
 | 
			
		|||
		<module>spring-boot-sample-amqp</module>
 | 
			
		||||
		<module>spring-boot-sample-aop</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-jpa</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");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
| 
						 | 
				
			
			@ -14,11 +14,16 @@
 | 
			
		|||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package org.springframework.boot.autoconfigure.data.alt;
 | 
			
		||||
package sample.data.elasticsearch;
 | 
			
		||||
 | 
			
		||||
import org.springframework.boot.autoconfigure.data.jpa.City;
 | 
			
		||||
import org.springframework.data.repository.Repository;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
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-aop</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-jpa</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