diff --git a/spring-boot-samples/spring-boot-sample-data-gemfire/pom.xml b/spring-boot-samples/spring-boot-sample-data-gemfire/pom.xml index 1589db8f85..0b77eb8c33 100644 --- a/spring-boot-samples/spring-boot-sample-data-gemfire/pom.xml +++ b/spring-boot-samples/spring-boot-sample-data-gemfire/pom.xml @@ -21,22 +21,26 @@ org.springframework.boot - spring-boot-starter + spring-boot-starter-data-gemfire + + + + org.springframework.shell + spring-shell + runtime + org.springframework.boot - spring-boot-starter-data-gemfire + spring-boot-configuration-processor + true + org.springframework.boot spring-boot-starter-test test - - org.springframework.shell - spring-shell - runtime - diff --git a/spring-boot-samples/spring-boot-sample-data-gemfire/src/main/java/sample/data/gemfire/SampleDataGemFireApplication.java b/spring-boot-samples/spring-boot-sample-data-gemfire/src/main/java/sample/data/gemfire/SampleDataGemFireApplication.java index 797be742a9..9c33171a79 100644 --- a/spring-boot-samples/spring-boot-sample-data-gemfire/src/main/java/sample/data/gemfire/SampleDataGemFireApplication.java +++ b/spring-boot-samples/spring-boot-sample-data-gemfire/src/main/java/sample/data/gemfire/SampleDataGemFireApplication.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2013 the original author or authors. + * Copyright 2012-2016 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. @@ -18,7 +18,11 @@ package sample.data.gemfire; import java.util.Properties; -import org.springframework.beans.factory.annotation.Autowired; +import com.gemstone.gemfire.cache.Cache; +import com.gemstone.gemfire.cache.RegionAttributes; +import sample.data.gemfire.config.SampleDataGemFireProperties; +import sample.data.gemfire.domain.Gemstone; + import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.properties.EnableConfigurationProperties; @@ -30,12 +34,6 @@ import org.springframework.data.gemfire.ReplicatedRegionFactoryBean; import org.springframework.data.gemfire.repository.config.EnableGemfireRepositories; import org.springframework.transaction.annotation.EnableTransactionManagement; -import com.gemstone.gemfire.cache.Cache; -import com.gemstone.gemfire.cache.RegionAttributes; - -import sample.data.gemfire.config.SampleDataGemFireApplicationProperties; -import sample.data.gemfire.domain.Gemstone; - /** * The GemstoneAppConfiguration class for allowing Spring Boot to pick up additional * application Spring configuration meta-data for GemFire, which must be specified in @@ -46,29 +44,21 @@ import sample.data.gemfire.domain.Gemstone; @SpringBootApplication @EnableGemfireRepositories @EnableTransactionManagement -@EnableConfigurationProperties(SampleDataGemFireApplicationProperties.class) -@SuppressWarnings("unused") +@EnableConfigurationProperties(SampleDataGemFireProperties.class) public class SampleDataGemFireApplication { protected static final String GEMSTONES_REGION_NAME = "Gemstones"; + private final SampleDataGemFireProperties applicationProperties; + + public SampleDataGemFireApplication(SampleDataGemFireProperties applicationProperties) { + this.applicationProperties = applicationProperties; + } + public static void main(final String[] args) { SpringApplication.run(SampleDataGemFireApplication.class, args); } - @Autowired - SampleDataGemFireApplicationProperties applicationProperties; - - Properties gemfireProperties() { - Properties gemfireProperties = new Properties(); - - gemfireProperties.setProperty("name", SampleDataGemFireApplication.class.getSimpleName()); - gemfireProperties.setProperty("mcast-port", "0"); - gemfireProperties.setProperty("locators", ""); - gemfireProperties.setProperty("log-level", applicationProperties.getLogLevel()); - - return gemfireProperties; - } @Bean CacheFactoryBean gemfireCache() { @@ -80,12 +70,23 @@ public class SampleDataGemFireApplication { return gemfireCache; } + private Properties gemfireProperties() { + Properties gemfireProperties = new Properties(); + + gemfireProperties.setProperty("name", SampleDataGemFireApplication.class.getSimpleName()); + gemfireProperties.setProperty("mcast-port", "0"); + gemfireProperties.setProperty("locators", ""); + gemfireProperties.setProperty("log-level", this.applicationProperties.getLogLevel()); + + return gemfireProperties; + } + @Bean(name = GEMSTONES_REGION_NAME) ReplicatedRegionFactoryBean gemstonesRegion(Cache gemfireCache, RegionAttributes gemstonesRegionAttributes) { ReplicatedRegionFactoryBean gemstonesRegion = - new ReplicatedRegionFactoryBean(); + new ReplicatedRegionFactoryBean(); gemstonesRegion.setAttributes(gemstonesRegionAttributes); gemstonesRegion.setClose(false); @@ -100,7 +101,7 @@ public class SampleDataGemFireApplication { @SuppressWarnings("unchecked") RegionAttributesFactoryBean gemstonesRegionAttributes() { RegionAttributesFactoryBean gemstonesRegionAttributes = - new RegionAttributesFactoryBean(); + new RegionAttributesFactoryBean(); gemstonesRegionAttributes.setKeyConstraint(Long.class); gemstonesRegionAttributes.setValueConstraint(Gemstone.class); diff --git a/spring-boot-samples/spring-boot-sample-data-gemfire/src/main/java/sample/data/gemfire/config/SampleDataGemFireApplicationProperties.java b/spring-boot-samples/spring-boot-sample-data-gemfire/src/main/java/sample/data/gemfire/config/SampleDataGemFireProperties.java similarity index 58% rename from spring-boot-samples/spring-boot-sample-data-gemfire/src/main/java/sample/data/gemfire/config/SampleDataGemFireApplicationProperties.java rename to spring-boot-samples/spring-boot-sample-data-gemfire/src/main/java/sample/data/gemfire/config/SampleDataGemFireProperties.java index 0e2d9c8db5..964330d070 100644 --- a/spring-boot-samples/spring-boot-sample-data-gemfire/src/main/java/sample/data/gemfire/config/SampleDataGemFireApplicationProperties.java +++ b/spring-boot-samples/spring-boot-sample-data-gemfire/src/main/java/sample/data/gemfire/config/SampleDataGemFireProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2010-2013 the original author or authors. + * Copyright 2012-2016 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 + * 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, @@ -17,27 +17,22 @@ package sample.data.gemfire.config; import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.util.StringUtils; /** - * The SampleDataGemFireApplicationProperties class... + * Configuration properties for Gemfire sample. * * @author John Blum - * @since 1.0.0 */ @ConfigurationProperties(prefix = "sample.data.gemfire") -public class SampleDataGemFireApplicationProperties { +public class SampleDataGemFireProperties { - protected static final String DEFAULT_LOG_LEVEL = "config"; - - private String logLevel = DEFAULT_LOG_LEVEL; - - protected String defaultIfEmpty(String value, String defaultValue) { - return (StringUtils.hasText(value) ? value : defaultValue); - } + /** + * Caching log level. + */ + private String logLevel = "config"; public String getLogLevel() { - return defaultIfEmpty(this.logLevel, DEFAULT_LOG_LEVEL); + return this.logLevel; } public void setLogLevel(String logLevel) { diff --git a/spring-boot-samples/spring-boot-sample-data-gemfire/src/main/java/sample/data/gemfire/domain/Gemstone.java b/spring-boot-samples/spring-boot-sample-data-gemfire/src/main/java/sample/data/gemfire/domain/Gemstone.java index 6f7841bd21..c883476817 100644 --- a/spring-boot-samples/spring-boot-sample-data-gemfire/src/main/java/sample/data/gemfire/domain/Gemstone.java +++ b/spring-boot-samples/spring-boot-sample-data-gemfire/src/main/java/sample/data/gemfire/domain/Gemstone.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2013 the original author or authors. + * Copyright 2012-2016 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. diff --git a/spring-boot-samples/spring-boot-sample-data-gemfire/src/main/java/sample/data/gemfire/service/GemstoneServiceImpl.java b/spring-boot-samples/spring-boot-sample-data-gemfire/src/main/java/sample/data/gemfire/service/GemstoneServiceImpl.java index 49f6a0981c..a16d9fa8ed 100644 --- a/spring-boot-samples/spring-boot-sample-data-gemfire/src/main/java/sample/data/gemfire/service/GemstoneServiceImpl.java +++ b/spring-boot-samples/spring-boot-sample-data-gemfire/src/main/java/sample/data/gemfire/service/GemstoneServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2015 the original author or authors. + * Copyright 2012-2016 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. @@ -19,15 +19,16 @@ package sample.data.gemfire.service; import java.util.ArrayList; import java.util.Arrays; import java.util.List; + import javax.annotation.PostConstruct; +import sample.data.gemfire.domain.Gemstone; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; -import sample.data.gemfire.domain.Gemstone; - /** * The GemstoneServiceImpl class is a Service object implementing the GemstoneService * interface containing business logic and rules in addition to data services for @@ -39,16 +40,17 @@ import sample.data.gemfire.domain.Gemstone; public class GemstoneServiceImpl implements GemstoneService { protected static final List APPROVED_GEMS = new ArrayList( - Arrays.asList("ALEXANDRITE", "AQUAMARINE", "DIAMOND", "OPAL", "PEARL", "RUBY", - "SAPPHIRE", "SPINEL", "TOPAZ")); + Arrays.asList("ALEXANDRITE", "AQUAMARINE", "DIAMOND", "OPAL", "PEARL", "RUBY", + "SAPPHIRE", "SPINEL", "TOPAZ")); + + private final GemstoneRepository gemstoneRepository; - @Autowired - @SuppressWarnings("unused") - private GemstoneRepository gemstoneRepository; + public GemstoneServiceImpl(GemstoneRepository gemstoneRepository) { + this.gemstoneRepository = gemstoneRepository; + } @PostConstruct public void init() { - Assert.notNull(gemstoneRepository, "'gemstoneRepository' was not properly initialized"); System.out.printf("[%1$s] initialized!%n", getClass().getSimpleName()); } @@ -126,7 +128,7 @@ public class GemstoneServiceImpl implements GemstoneService { Gemstone savedGemstone = validate(this.gemstoneRepository.save(gemstone)); Assert.state(savedGemstone.equals(get(gemstone.getId())), String.format( - "Failed to find Gemstone (%1$s) in GemFire's Cache Region 'Gemstones'!", + "Failed to find Gemstone (%1$s) in GemFire's Cache Region 'Gemstones'!", gemstone)); System.out.printf("Saved Gemstone [%1$s]%n", savedGemstone.getName()); @@ -146,24 +148,12 @@ public class GemstoneServiceImpl implements GemstoneService { return gemstone; } - @SuppressWarnings("unused") public static final class IllegalGemstoneException extends IllegalArgumentException { - public IllegalGemstoneException() { - } - - public IllegalGemstoneException(final String message) { + public IllegalGemstoneException(String message) { super(message); } - public IllegalGemstoneException(final Throwable cause) { - super(cause); - } - - public IllegalGemstoneException(final String message, final Throwable cause) { - super(message, cause); - } - } } diff --git a/spring-boot-samples/spring-boot-sample-data-gemfire/src/test/java/sample/data/gemfire/SampleDataGemFireApplicationTests.java b/spring-boot-samples/spring-boot-sample-data-gemfire/src/test/java/sample/data/gemfire/SampleDataGemFireApplicationTests.java index 7fa39ac18a..38aed96983 100644 --- a/spring-boot-samples/spring-boot-sample-data-gemfire/src/test/java/sample/data/gemfire/SampleDataGemFireApplicationTests.java +++ b/spring-boot-samples/spring-boot-sample-data-gemfire/src/test/java/sample/data/gemfire/SampleDataGemFireApplicationTests.java @@ -16,24 +16,22 @@ package sample.data.gemfire; -import static org.assertj.core.api.Assertions.assertThat; - import java.util.concurrent.atomic.AtomicLong; -import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import sample.data.gemfire.domain.Gemstone; +import sample.data.gemfire.service.GemstoneService; +import sample.data.gemfire.service.GemstoneServiceImpl.IllegalGemstoneException; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import sample.data.gemfire.domain.Gemstone; -import sample.data.gemfire.service.GemstoneService; -import sample.data.gemfire.service.GemstoneServiceImpl.IllegalGemstoneException; +import static org.assertj.core.api.Assertions.assertThat; /** - * The SampleDataGemFireApplicationTests class is a test suite with test cases testing the - * SampleDataGemFireApplication in Spring Boot. + * Tests for {@link SampleDataGemFireApplication}. * * @author John Blum */ @@ -42,15 +40,9 @@ import sample.data.gemfire.service.GemstoneServiceImpl.IllegalGemstoneException; public class SampleDataGemFireApplicationTests { @Autowired - @SuppressWarnings("unused") private GemstoneService gemstoneService; - private final AtomicLong idGenerator = new AtomicLong(0l); - - @Before - public void setup() { - assertThat(this.gemstoneService).isNotNull(); - } + private final AtomicLong idGenerator = new AtomicLong(0L); @Test public void gemstonesAppServiceEndpoints() { @@ -62,7 +54,7 @@ public class SampleDataGemFireApplicationTests { assertThat(this.gemstoneService.count()).isEqualTo(2); assertThat(this.gemstoneService.list()).contains( - getGemstones("Diamond", "Ruby")); + getGemstones("Diamond", "Ruby")); try { this.gemstoneService.save(createGemstone("Coal")); @@ -73,14 +65,14 @@ public class SampleDataGemFireApplicationTests { assertThat(this.gemstoneService.count()).isEqualTo(2); assertThat(this.gemstoneService.list()).contains( - getGemstones("Diamond", "Ruby")); + getGemstones("Diamond", "Ruby")); this.gemstoneService.save(createGemstone("Pearl")); this.gemstoneService.save(createGemstone("Sapphire")); assertThat(this.gemstoneService.count()).isEqualTo(4); assertThat(this.gemstoneService.list()).contains( - getGemstones("Diamond", "Ruby", "Pearl", "Sapphire")); + getGemstones("Diamond", "Ruby", "Pearl", "Sapphire")); try { this.gemstoneService.save(createGemstone("Quartz")); @@ -91,11 +83,11 @@ public class SampleDataGemFireApplicationTests { assertThat(this.gemstoneService.count()).isEqualTo(4); assertThat(this.gemstoneService.list()).contains( - getGemstones("Diamond", "Ruby", "Pearl", "Sapphire")); + getGemstones("Diamond", "Ruby", "Pearl", "Sapphire")); assertThat(this.gemstoneService.get("Diamond")).isEqualTo( - createGemstone("Diamond")); + createGemstone("Diamond")); assertThat(this.gemstoneService.get("Pearl")).isEqualTo( - createGemstone("Pearl")); + createGemstone("Pearl")); } private Gemstone[] getGemstones(String... names) { diff --git a/spring-boot-starters/spring-boot-starter-data-gemfire/pom.xml b/spring-boot-starters/spring-boot-starter-data-gemfire/pom.xml index 2c38863ced..67b6860675 100644 --- a/spring-boot-starters/spring-boot-starter-data-gemfire/pom.xml +++ b/spring-boot-starters/spring-boot-starter-data-gemfire/pom.xml @@ -8,9 +8,8 @@ spring-boot-starter-data-gemfire Spring Boot Data GemFire Starter - - Starter for using GemFire distributed data store and Spring Data GemFire. - + Starter for using GemFire distributed data store and Spring Data + GemFire http://projects.spring.io/spring-boot/ Pivotal Software, Inc. @@ -38,7 +37,6 @@ repo.spring.io - Spring libs-release Maven Repository http://repo.spring.io/libs-release true