I am using the sample project and if I create the following structure the following exception is thrown
2015-06-18 16:55:33.119 INFO 26148 --- [ main] .b.l.ClasspathLoggingApplicationListener : Application failed to start with classpath: [file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/lib/ant-javafx.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/lib/dt.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/lib/javafx-mx.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/lib/jconsole.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/lib/sa-jdi.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/lib/tools.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/jre/lib/charsets.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/jre/lib/deploy.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/jre/lib/javaws.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/jre/lib/jce.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/jre/lib/jfr.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/jre/lib/jfxswt.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/jre/lib/jsse.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/jre/lib/management-agent.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/jre/lib/plugin.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/jre/lib/resources.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/jre/lib/rt.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/jre/lib/ext/cldrdata.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/jre/lib/ext/dnsns.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/jre/lib/ext/jfxrt.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/jre/lib/ext/localedata.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/jre/lib/ext/nashorn.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/jre/lib/ext/sunec.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/jre/lib/ext/zipfs.jar, file:/Users/jmirc/dev/3-others/consul/target/classes/, file:/Users/jmirc/.m2/repository/org/springframework/boot/spring-boot-starter-web/1.2.3.RELEASE/spring-boot-starter-web-1.2.3.RELEASE.jar, file:/Users/jmirc/.m2/repository/org/springframework/boot/spring-boot-starter/1.2.3.RELEASE/spring-boot-starter-1.2.3.RELEASE.jar, file:/Users/jmirc/.m2/repository/org/springframework/boot/spring-boot/1.2.3.RELEASE/spring-boot-1.2.3.RELEASE.jar, file:/Users/jmirc/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/1.2.3.RELEASE/spring-boot-autoconfigure-1.2.3.RELEASE.jar, file:/Users/jmirc/.m2/repository/org/springframework/boot/spring-boot-starter-logging/1.2.3.RELEASE/spring-boot-starter-logging-1.2.3.RELEASE.jar, file:/Users/jmirc/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.11/jcl-over-slf4j-1.7.11.jar, file:/Users/jmirc/.m2/repository/org/slf4j/jul-to-slf4j/1.7.11/jul-to-slf4j-1.7.11.jar, file:/Users/jmirc/.m2/repository/org/slf4j/log4j-over-slf4j/1.7.11/log4j-over-slf4j-1.7.11.jar, file:/Users/jmirc/.m2/repository/ch/qos/logback/logback-classic/1.1.3/logback-classic-1.1.3.jar, file:/Users/jmirc/.m2/repository/ch/qos/logback/logback-core/1.1.3/logback-core-1.1.3.jar, file:/Users/jmirc/.m2/repository/org/yaml/snakeyaml/1.14/snakeyaml-1.14.jar, file:/Users/jmirc/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/1.2.3.RELEASE/spring-boot-starter-tomcat-1.2.3.RELEASE.jar, file:/Users/jmirc/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/8.0.20/tomcat-embed-core-8.0.20.jar, file:/Users/jmirc/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/8.0.20/tomcat-embed-el-8.0.20.jar, file:/Users/jmirc/.m2/repository/org/apache/tomcat/embed/tomcat-embed-logging-juli/8.0.20/tomcat-embed-logging-juli-8.0.20.jar, file:/Users/jmirc/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/8.0.20/tomcat-embed-websocket-8.0.20.jar, file:/Users/jmirc/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.4.5/jackson-databind-2.4.5.jar, file:/Users/jmirc/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.4.5/jackson-annotations-2.4.5.jar, file:/Users/jmirc/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.4.5/jackson-core-2.4.5.jar, file:/Users/jmirc/.m2/repository/org/hibernate/hibernate-validator/5.1.3.Final/hibernate-validator-5.1.3.Final.jar, file:/Users/jmirc/.m2/repository/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar, file:/Users/jmirc/.m2/repository/org/jboss/logging/jboss-logging/3.1.3.GA/jboss-logging-3.1.3.GA.jar, file:/Users/jmirc/.m2/repository/com/fasterxml/classmate/1.0.0/classmate-1.0.0.jar, file:/Users/jmirc/.m2/repository/org/springframework/spring-core/4.1.6.RELEASE/spring-core-4.1.6.RELEASE.jar, file:/Users/jmirc/.m2/repository/org/springframework/spring-web/4.1.6.RELEASE/spring-web-4.1.6.RELEASE.jar, file:/Users/jmirc/.m2/repository/org/springframework/spring-aop/4.1.6.RELEASE/spring-aop-4.1.6.RELEASE.jar, file:/Users/jmirc/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar, file:/Users/jmirc/.m2/repository/org/springframework/spring-beans/4.1.6.RELEASE/spring-beans-4.1.6.RELEASE.jar, file:/Users/jmirc/.m2/repository/org/springframework/spring-context/4.1.6.RELEASE/spring-context-4.1.6.RELEASE.jar, file:/Users/jmirc/.m2/repository/org/springframework/spring-webmvc/4.1.6.RELEASE/spring-webmvc-4.1.6.RELEASE.jar, file:/Users/jmirc/.m2/repository/org/springframework/spring-expression/4.1.6.RELEASE/spring-expression-4.1.6.RELEASE.jar, file:/Users/jmirc/.m2/repository/org/springframework/boot/spring-boot-starter-actuator/1.2.3.RELEASE/spring-boot-starter-actuator-1.2.3.RELEASE.jar, file:/Users/jmirc/.m2/repository/org/springframework/boot/spring-boot-actuator/1.2.3.RELEASE/spring-boot-actuator-1.2.3.RELEASE.jar, file:/Users/jmirc/.m2/repository/com/ecwid/consul/consul-api/1.1.2/consul-api-1.1.2.jar, file:/Users/jmirc/.m2/repository/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.jar, file:/Users/jmirc/.m2/repository/commons-codec/commons-codec/1.6/commons-codec-1.6.jar, file:/Users/jmirc/.m2/repository/commons-logging/commons-logging/1.1/commons-logging-1.1.jar, file:/Users/jmirc/.m2/repository/log4j/log4j/1.2.17/log4j-1.2.17.jar, file:/Users/jmirc/.m2/repository/logkit/logkit/1.0.1/logkit-1.0.1.jar, file:/Users/jmirc/.m2/repository/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar, file:/Users/jmirc/.m2/repository/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar, file:/Users/jmirc/.m2/repository/com/google/code/gson/gson/2.3.1/gson-2.3.1.jar, file:/Users/jmirc/.m2/repository/org/springframework/cloud/spring-cloud-commons/1.0.2.BUILD-SNAPSHOT/spring-cloud-commons-1.0.2.BUILD-20150617.043931-18.jar, file:/Users/jmirc/.m2/repository/org/springframework/security/spring-security-crypto/3.2.7.RELEASE/spring-security-crypto-3.2.7.RELEASE.jar, file:/Users/jmirc/.m2/repository/org/springframework/cloud/spring-cloud-consul-config/1.0.0.BUILD-SNAPSHOT/spring-cloud-consul-config-1.0.0.BUILD-SNAPSHOT.jar, file:/Users/jmirc/.m2/repository/org/springframework/cloud/spring-cloud-consul-discovery/1.0.0.BUILD-SNAPSHOT/spring-cloud-consul-discovery-1.0.0.BUILD-SNAPSHOT.jar, file:/Users/jmirc/.m2/repository/org/springframework/cloud/spring-cloud-consul-core/1.0.0.BUILD-SNAPSHOT/spring-cloud-consul-core-1.0.0.BUILD-SNAPSHOT.jar, file:/Users/jmirc/.m2/repository/org/springframework/cloud/spring-cloud-consul-ui/1.0.0.BUILD-SNAPSHOT/spring-cloud-consul-ui-1.0.0.BUILD-SNAPSHOT.jar, file:/Users/jmirc/.m2/repository/org/springframework/cloud/spring-cloud-starter-zuul/1.0.2.BUILD-SNAPSHOT/spring-cloud-starter-zuul-1.0.2.BUILD-20150427.150906-1.jar, file:/Users/jmirc/.m2/repository/org/springframework/cloud/spring-cloud-starter/1.0.2.BUILD-SNAPSHOT/spring-cloud-starter-1.0.2.BUILD-20150427.150843-1.jar, file:/Users/jmirc/.m2/repository/org/springframework/cloud/spring-cloud-context/1.0.2.BUILD-SNAPSHOT/spring-cloud-context-1.0.2.BUILD-20150617.043919-18.jar, file:/Users/jmirc/.m2/repository/org/springframework/cloud/spring-cloud-starter-hystrix/1.0.2.BUILD-SNAPSHOT/spring-cloud-starter-hystrix-1.0.2.BUILD-20150427.150854-1.jar, file:/Users/jmirc/.m2/repository/org/springframework/cloud/spring-cloud-netflix-core/1.0.2.BUILD-SNAPSHOT/spring-cloud-netflix-core-1.0.2.BUILD-20150430.190444-4.jar, file:/Users/jmirc/.m2/repository/com/netflix/hystrix/hystrix-core/1.4.4/hystrix-core-1.4.4.jar, file:/Users/jmirc/.m2/repository/io/reactivex/rxjava/1.0.7/rxjava-1.0.7.jar, file:/Users/jmirc/.m2/repository/com/netflix/hystrix/hystrix-metrics-event-stream/1.4.4/hystrix-metrics-event-stream-1.4.4.jar, file:/Users/jmirc/.m2/repository/org/codehaus/jackson/jackson-core-asl/1.9.2/jackson-core-asl-1.9.2.jar, file:/Users/jmirc/.m2/repository/com/netflix/hystrix/hystrix-javanica/1.4.4/hystrix-javanica-1.4.4.jar, file:/Users/jmirc/.m2/repository/org/aspectj/aspectjweaver/1.8.5/aspectjweaver-1.8.5.jar, file:/Users/jmirc/.m2/repository/org/aspectj/aspectjrt/1.8.5/aspectjrt-1.8.5.jar, file:/Users/jmirc/.m2/repository/com/google/guava/guava/18.0/guava-18.0.jar, file:/Users/jmirc/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar, file:/Users/jmirc/.m2/repository/org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.jar, file:/Users/jmirc/.m2/repository/com/google/code/findbugs/jsr305/2.0.0/jsr305-2.0.0.jar, file:/Users/jmirc/.m2/repository/org/springframework/cloud/spring-cloud-starter-ribbon/1.0.2.BUILD-SNAPSHOT/spring-cloud-starter-ribbon-1.0.2.BUILD-20150427.150848-1.jar, file:/Users/jmirc/.m2/repository/com/netflix/ribbon/ribbon/2.0.0/ribbon-2.0.0.jar, file:/Users/jmirc/.m2/repository/com/netflix/ribbon/ribbon-transport/2.0.0/ribbon-transport-2.0.0.jar, file:/Users/jmirc/.m2/repository/io/reactivex/rxnetty-contexts/0.4.6/rxnetty-contexts-0.4.6.jar, file:/Users/jmirc/.m2/repository/io/reactivex/rxnetty-servo/0.4.6/rxnetty-servo-0.4.6.jar, file:/Users/jmirc/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar, file:/Users/jmirc/.m2/repository/io/reactivex/rxnetty/0.4.6/rxnetty-0.4.6.jar, file:/Users/jmirc/.m2/repository/io/netty/netty-codec-http/4.0.25.Final/netty-codec-http-4.0.25.Final.jar, file:/Users/jmirc/.m2/repository/io/netty/netty-codec/4.0.25.Final/netty-codec-4.0.25.Final.jar, file:/Users/jmirc/.m2/repository/io/netty/netty-handler/4.0.25.Final/netty-handler-4.0.25.Final.jar, file:/Users/jmirc/.m2/repository/io/netty/netty-transport-native-epoll/4.0.25.Final/netty-transport-native-epoll-4.0.25.Final.jar, file:/Users/jmirc/.m2/repository/io/netty/netty-common/4.0.25.Final/netty-common-4.0.25.Final.jar, file:/Users/jmirc/.m2/repository/io/netty/netty-buffer/4.0.25.Final/netty-buffer-4.0.25.Final.jar, file:/Users/jmirc/.m2/repository/io/netty/netty-transport/4.0.25.Final/netty-transport-4.0.25.Final.jar, file:/Users/jmirc/.m2/repository/commons-configuration/commons-configuration/1.8/commons-configuration-1.8.jar, file:/Users/jmirc/.m2/repository/com/netflix/ribbon/ribbon-core/2.0.0/ribbon-core-2.0.0.jar, file:/Users/jmirc/.m2/repository/com/google/code/findbugs/annotations/2.0.0/annotations-2.0.0.jar, file:/Users/jmirc/.m2/repository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar, file:/Users/jmirc/.m2/repository/com/netflix/ribbon/ribbon-httpclient/2.0.0/ribbon-httpclient-2.0.0.jar, file:/Users/jmirc/.m2/repository/com/sun/jersey/jersey-client/1.13/jersey-client-1.13.jar, file:/Users/jmirc/.m2/repository/com/sun/jersey/jersey-core/1.13/jersey-core-1.13.jar, file:/Users/jmirc/.m2/repository/com/sun/jersey/contribs/jersey-apache-client4/1.11/jersey-apache-client4-1.11.jar, file:/Users/jmirc/.m2/repository/com/netflix/ribbon/ribbon-loadbalancer/2.0.0/ribbon-loadbalancer-2.0.0.jar, file:/Users/jmirc/.m2/repository/com/netflix/netflix-commons/netflix-statistics/0.1.1/netflix-statistics-0.1.1.jar, file:/Users/jmirc/.m2/repository/com/netflix/rxjava/rxjava-core/0.20.7/rxjava-core-0.20.7.jar, file:/Users/jmirc/.m2/repository/com/netflix/zuul/zuul-core/1.0.28/zuul-core-1.0.28.jar, file:/Users/jmirc/.m2/repository/com/netflix/netflix-commons/netflix-commons-util/0.1.1/netflix-commons-util-0.1.1.jar, file:/Users/jmirc/.m2/repository/org/slf4j/slf4j-api/1.7.11/slf4j-api-1.7.11.jar, file:/Users/jmirc/.m2/repository/com/netflix/servo/servo-core/0.7.2/servo-core-0.7.2.jar, file:/Users/jmirc/.m2/repository/com/netflix/archaius/archaius-core/0.6.5/archaius-core-0.6.5.jar, file:/Users/jmirc/.m2/repository/commons-io/commons-io/2.4/commons-io-2.4.jar, file:/Users/jmirc/.m2/repository/joda-time/joda-time/2.5/joda-time-2.5.jar, file:/Users/jmirc/.m2/repository/org/apache/httpcomponents/httpcore/4.4/httpcore-4.4.jar, file:/Applications/IntelliJ%20IDEA%2014%20EAP.app/Contents/lib/idea_rt.jar]
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sampleProperties': Could not bind properties to [unknown] (target=sample, ignoreInvalidFields=false, ignoreUnknownFields=true, ignoreNestedProperties=false); nested exception is java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.postProcessBeforeInitialization(ConfigurationPropertiesBindingPostProcessor.java:303)
at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.postProcessBeforeInitialization(ConfigurationPropertiesBindingPostProcessor.java:250)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:408)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1566)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:957)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:946)
at demo.ConsulDemoApplication.main(ConsulDemoApplication.java:40)
Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at org.springframework.boot.bind.RelaxedDataBinder$BeanPath.isProperty(RelaxedDataBinder.java:531)
config/:
config/application/:
config/application/sample/:
config/application/sample/prop:test
config/MyTestProcessor/:
config/MyTestProcessor/sample/:
config/MyTestProcessor/sample/prop:test1
public void init() {
Response<List<GetValue>> response = source.getKVValues(context,
QueryParams.DEFAULT);
List<GetValue> values = response.getValue();
if (values != null) {
for (GetValue getValue : values) {
String key = getValue.getKey();
if (!StringUtils.endsWithIgnoreCase(key, "/")) {
key = key.replace(context, "").replace('/', '.');
String value = getDecoded(getValue.getValue());
properties.put(key, value);
}
}
}
}