From fc4f375a65fbef8a89e0c5ee23b51c5224443b5e Mon Sep 17 00:00:00 2001 From: Biju Kunjummen Date: Fri, 21 Jul 2017 08:41:10 -0700 Subject: [PATCH 1/5] Restore ignored test - works cleanly for a full build (#2146) --- .../cloud/netflix/zuul/SimpleZuulProxyApplicationTests.java | 1 - 1 file changed, 1 deletion(-) diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SimpleZuulProxyApplicationTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SimpleZuulProxyApplicationTests.java index 40eae407..8221655c 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SimpleZuulProxyApplicationTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SimpleZuulProxyApplicationTests.java @@ -118,7 +118,6 @@ public class SimpleZuulProxyApplicationTests { } @Test - @Ignore public void getOnSelfWithComplexQueryParam() throws URISyntaxException { String encodedQueryString = "foo=%7B%22project%22%3A%22stream%22%2C%22logger%22%3A%22javascript%22%2C%22platform%22%3A%22javascript%22%2C%22request%22%3A%7B%22url%22%3A%22https%3A%2F%2Ffoo%2Fadmin"; ResponseEntity result = testRestTemplate.exchange( From fd783734aca257104c8bfcaed529b9777e3f9a06 Mon Sep 17 00:00:00 2001 From: Biju Kunjummen Date: Fri, 21 Jul 2017 08:45:01 -0700 Subject: [PATCH 2/5] Add docs for default ribbon client configuration (#2142) fixes #1741 --- .../main/asciidoc/spring-cloud-netflix.adoc | 22 +++++++------- ...onClientsPreprocessorIntegrationTests.java | 29 ++++++++++++++----- ...ClientDefaultConfigurationTestsConfig.java | 4 ++- 3 files changed, 36 insertions(+), 19 deletions(-) diff --git a/docs/src/main/asciidoc/spring-cloud-netflix.adoc b/docs/src/main/asciidoc/spring-cloud-netflix.adoc index 7172d4ae..8aaa3504 100644 --- a/docs/src/main/asciidoc/spring-cloud-netflix.adoc +++ b/docs/src/main/asciidoc/spring-cloud-netflix.adoc @@ -717,7 +717,7 @@ You can configure some bits of a Ribbon client using external properties in `.ribbon.*`, which is no different than using the Netflix APIs natively, except that you can use Spring Boot configuration files. The native options can -be inspected as static fields in `CommonClientConfigKey` (part of +be inspected as static fields in https://github.com/Netflix/ribbon/blob/master/ribbon-core/src/main/java/com/netflix/client/config/CommonClientConfigKey.java[`CommonClientConfigKey`] (part of ribbon-core). Spring Cloud also lets you take full control of the client by @@ -749,7 +749,7 @@ Spring Cloud Netflix provides the following beans by default for ribbon * `IClientConfig` ribbonClientConfig: `DefaultClientConfigImpl` * `IRule` ribbonRule: `ZoneAvoidanceRule` -* `IPing` ribbonPing: `NoOpPing` +* `IPing` ribbonPing: `DummyPing` * `ServerList` ribbonServerList: `ConfigurationBasedServerList` * `ServerListFilter` ribbonServerListFilter: `ZonePreferenceServerListFilter` * `ILoadBalancer` ribbonLoadBalancer: `ZoneAwareLoadBalancer` @@ -761,16 +761,18 @@ one of the beans described. Example: [source,java,indent=0] ---- -@Configuration -public class FooConfiguration { - @Bean - public IPing ribbonPing(IClientConfig config) { - return new PingUrl(); - } -} +include::../../../../spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/ribbon/RibbonClientsPreprocessorIntegrationTests.java[tags=sample_override_ribbon_config,indent=0] ---- -This replaces the `NoOpPing` with `PingUrl`. +This replaces the `NoOpPing` with `PingUrl` and provides a custom `serverListFilter` + +=== Customizing default for all Ribbon Clients +A default configuration can be provided for all Ribbon Clients using the `@RibbonClients` annotation and registering a default configuration as shown in the following example: +[source,java,indent=0] +---- +include::../../../../spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/ribbon/test/RibbonClientDefaultConfigurationTestsConfig.java[tags=sample_default_ribbon_config,indent=0] + +---- === Customizing the Ribbon Client using properties diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/ribbon/RibbonClientsPreprocessorIntegrationTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/ribbon/RibbonClientsPreprocessorIntegrationTests.java index 302a6f90..cda64a64 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/ribbon/RibbonClientsPreprocessorIntegrationTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/ribbon/RibbonClientsPreprocessorIntegrationTests.java @@ -16,12 +16,15 @@ package org.springframework.cloud.netflix.ribbon; -import static org.junit.Assert.assertEquals; - +import com.netflix.loadbalancer.IPing; +import com.netflix.loadbalancer.PingUrl; +import com.netflix.loadbalancer.Server; +import com.netflix.loadbalancer.ZoneAvoidanceRule; +import com.netflix.loadbalancer.ZoneAwareLoadBalancer; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration; +import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.commons.util.UtilAutoConfiguration; import org.springframework.cloud.netflix.archaius.ArchaiusAutoConfiguration; @@ -32,9 +35,7 @@ import org.springframework.context.annotation.Import; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import com.netflix.loadbalancer.Server; -import com.netflix.loadbalancer.ZoneAvoidanceRule; -import com.netflix.loadbalancer.ZoneAwareLoadBalancer; +import static org.assertj.core.api.Assertions.assertThat; /** * @author Dave Syer @@ -59,8 +60,13 @@ public class RibbonClientsPreprocessorIntegrationTests { @Test public void serverListFilterOverride() throws Exception { - assertEquals("myTestZone", ZonePreferenceServerListFilter.class - .cast(getLoadBalancer().getFilter()).getZone()); + assertThat(ZonePreferenceServerListFilter.class + .cast(getLoadBalancer().getFilter()).getZone()).isEqualTo("myTestZone"); + } + + @Test + public void pingOverride() throws Exception { + assertThat(getLoadBalancer().getPing()).isInstanceOf(PingUrl.class); } @Configuration @@ -70,6 +76,7 @@ public class RibbonClientsPreprocessorIntegrationTests { protected static class TestConfiguration { } + // tag::sample_override_ribbon_config[] @Configuration protected static class FooConfiguration { @Bean @@ -78,6 +85,12 @@ public class RibbonClientsPreprocessorIntegrationTests { filter.setZone("myTestZone"); return filter; } + + @Bean + public IPing ribbonPing() { + return new PingUrl(); + } } + // end::sample_override_ribbon_config[] } diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/ribbon/test/RibbonClientDefaultConfigurationTestsConfig.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/ribbon/test/RibbonClientDefaultConfigurationTestsConfig.java index 10d86df1..5ee7924f 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/ribbon/test/RibbonClientDefaultConfigurationTestsConfig.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/ribbon/test/RibbonClientDefaultConfigurationTestsConfig.java @@ -41,6 +41,7 @@ import com.netflix.loadbalancer.ServerListSubsetFilter; @Configuration @Import({ PropertyPlaceholderAutoConfiguration.class, ArchaiusAutoConfiguration.class, UtilAutoConfiguration.class, RibbonAutoConfiguration.class }) +// tag::sample_default_ribbon_config[] @RibbonClients(defaultConfiguration = DefaultRibbonConfig.class) public class RibbonClientDefaultConfigurationTestsConfig { @@ -75,4 +76,5 @@ class DefaultRibbonConfig { return filter; } -} \ No newline at end of file +} +// end::sample_default_ribbon_config[] \ No newline at end of file From 348c96bf13be1b55abbd617c34255ffeffb7cb9b Mon Sep 17 00:00:00 2001 From: Daniel Lavoie Date: Fri, 21 Jul 2017 21:55:57 +0200 Subject: [PATCH 3/5] Optionally remove Jersey dependencies from Eureka Client (#1850) Fixes gh-1849 --- .../main/asciidoc/spring-cloud-netflix.adoc | 28 +++ spring-cloud-netflix-eureka-client/pom.xml | 11 + .../netflix/eureka/CloudEurekaClient.java | 3 +- .../eureka/EurekaClientAutoConfiguration.java | 23 +- ...coveryClientOptionalArgsConfiguration.java | 48 ++++ .../eureka/http/EurekaApplications.java | 40 +++ ...stTemplateDiscoveryClientOptionalArgs.java | 29 +++ .../http/RestTemplateEurekaHttpClient.java | 227 ++++++++++++++++++ .../RestTemplateTransportClientFactories.java | 46 ++++ .../RestTemplateTransportClientFactory.java | 98 ++++++++ .../JerseyOptionalArgsConfigurationTest.java | 45 ++++ ...TemplateOptionalArgsConfigurationTest.java | 46 ++++ .../http/EurekaServerMockApplication.java | 117 +++++++++ .../RestTemplateEurekaHttpClientTest.java | 139 +++++++++++ ...tTemplateTransportClientFactoriesTest.java | 29 +++ ...estTemplateTransportClientFactoryTest.java | 57 +++++ .../src/test/resources/application.yml | 9 +- 17 files changed, 982 insertions(+), 13 deletions(-) create mode 100644 spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/config/DiscoveryClientOptionalArgsConfiguration.java create mode 100644 spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/EurekaApplications.java create mode 100644 spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/RestTemplateDiscoveryClientOptionalArgs.java create mode 100644 spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/RestTemplateEurekaHttpClient.java create mode 100644 spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/RestTemplateTransportClientFactories.java create mode 100644 spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/RestTemplateTransportClientFactory.java create mode 100644 spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/config/JerseyOptionalArgsConfigurationTest.java create mode 100644 spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/config/RestTemplateOptionalArgsConfigurationTest.java create mode 100644 spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/http/EurekaServerMockApplication.java create mode 100644 spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/http/RestTemplateEurekaHttpClientTest.java create mode 100644 spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/http/RestTemplateTransportClientFactoriesTest.java create mode 100644 spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/http/RestTemplateTransportClientFactoryTest.java diff --git a/docs/src/main/asciidoc/spring-cloud-netflix.adoc b/docs/src/main/asciidoc/spring-cloud-netflix.adoc index 8aaa3504..b87a3008 100644 --- a/docs/src/main/asciidoc/spring-cloud-netflix.adoc +++ b/docs/src/main/asciidoc/spring-cloud-netflix.adoc @@ -264,6 +264,34 @@ not be started yet). It is initialized in a `SmartLifecycle` (with another `SmartLifecycle` with higher phase. ==== +==== EurekaClient without Jersey + +By default, EurekaClient uses Jersey for HTTP communication. If you wish +to avoid dependencies from Jersey, you can exclude it from your dependencies. +Spring Cloud will auto configure a transport client based on Spring +`RestTemplate`. + +---- + + org.springframework.cloud + spring-cloud-starter-eureka + + + com.sun.jersey + jersey-client + + + com.sun.jersey + jersey-core + + + com.sun.jersey.contribs + jersey-apache-client4 + + + +---- + === Alternatives to the native Netflix EurekaClient You don't have to use the raw Netflix `EurekaClient` and usually it diff --git a/spring-cloud-netflix-eureka-client/pom.xml b/spring-cloud-netflix-eureka-client/pom.xml index ffc08ead..dfd1750a 100644 --- a/spring-cloud-netflix-eureka-client/pom.xml +++ b/spring-cloud-netflix-eureka-client/pom.xml @@ -118,11 +118,22 @@ compile true + + org.springframework.boot + spring-boot-starter-security + test + org.springframework.boot spring-boot-starter-test test + + org.springframework.cloud + spring-cloud-commons + test-jar + test + org.springframework.retry spring-retry diff --git a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/CloudEurekaClient.java b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/CloudEurekaClient.java index 79a164f3..74db0b83 100644 --- a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/CloudEurekaClient.java +++ b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/CloudEurekaClient.java @@ -29,6 +29,7 @@ import org.springframework.util.ReflectionUtils; import com.netflix.appinfo.ApplicationInfoManager; import com.netflix.appinfo.InstanceInfo; import com.netflix.appinfo.InstanceInfo.InstanceStatus; +import com.netflix.discovery.AbstractDiscoveryClientOptionalArgs; import com.netflix.discovery.DiscoveryClient; import com.netflix.discovery.EurekaClientConfig; import com.netflix.discovery.shared.transport.EurekaHttpClient; @@ -55,7 +56,7 @@ public class CloudEurekaClient extends DiscoveryClient { public CloudEurekaClient(ApplicationInfoManager applicationInfoManager, EurekaClientConfig config, - DiscoveryClientOptionalArgs args, + AbstractDiscoveryClientOptionalArgs args, ApplicationEventPublisher publisher) { super(applicationInfoManager, config, args); this.applicationInfoManager = applicationInfoManager; diff --git a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration.java b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration.java index 2c7829ea..170acc8a 100644 --- a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration.java +++ b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration.java @@ -17,6 +17,8 @@ package org.springframework.cloud.netflix.eureka; +import static org.springframework.cloud.commons.util.IdUtils.getDefaultInstanceId; + import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -47,6 +49,7 @@ import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationP import org.springframework.cloud.client.serviceregistry.ServiceRegistryAutoConfiguration; import org.springframework.cloud.commons.util.InetUtils; import org.springframework.cloud.context.scope.refresh.RefreshScope; +import org.springframework.cloud.netflix.eureka.config.DiscoveryClientOptionalArgsConfiguration; import org.springframework.cloud.netflix.eureka.serviceregistry.EurekaAutoServiceRegistration; import org.springframework.cloud.netflix.eureka.serviceregistry.EurekaRegistration; import org.springframework.cloud.netflix.eureka.serviceregistry.EurekaServiceRegistry; @@ -54,6 +57,7 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Lazy; import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.core.env.PropertyResolver; @@ -63,9 +67,10 @@ import com.netflix.appinfo.ApplicationInfoManager; import com.netflix.appinfo.EurekaInstanceConfig; import com.netflix.appinfo.HealthCheckHandler; import com.netflix.appinfo.InstanceInfo; -import com.netflix.discovery.DiscoveryClient.DiscoveryClientOptionalArgs; +import com.netflix.discovery.AbstractDiscoveryClientOptionalArgs; import com.netflix.discovery.EurekaClient; import com.netflix.discovery.EurekaClientConfig; + import static org.springframework.cloud.commons.util.IdUtils.getDefaultInstanceId; /** @@ -74,10 +79,12 @@ import static org.springframework.cloud.commons.util.IdUtils.getDefaultInstanceI * @author Jon Schneider * @author Matt Jenkins * @author Ryan Baxter + * @author Daniel Lavoie */ @Configuration @EnableConfigurationProperties @ConditionalOnClass(EurekaClientConfig.class) +@Import(DiscoveryClientOptionalArgsConfiguration.class) @ConditionalOnBean(EurekaDiscoveryClientConfiguration.Marker.class) @ConditionalOnProperty(value = "eureka.client.enabled", matchIfMissing = true) @AutoConfigureBefore({ NoopDiscoveryClientAutoConfiguration.class, @@ -177,12 +184,6 @@ public class EurekaClientAutoConfiguration { return new EurekaAutoServiceRegistration(context, registry, registration); } - @Bean - @ConditionalOnMissingBean(value = DiscoveryClientOptionalArgs.class, search = SearchStrategy.CURRENT) - public MutableDiscoveryClientOptionalArgs discoveryClientOptionalArgs() { - return new MutableDiscoveryClientOptionalArgs(); - } - @Configuration @ConditionalOnMissingRefreshScope protected static class EurekaClientConfiguration { @@ -190,8 +191,8 @@ public class EurekaClientAutoConfiguration { @Autowired private ApplicationContext context; - @Autowired(required = false) - private DiscoveryClientOptionalArgs optionalArgs; + @Autowired + private AbstractDiscoveryClientOptionalArgs optionalArgs; @Bean(destroyMethod = "shutdown") @ConditionalOnMissingBean(value = EurekaClient.class, search = SearchStrategy.CURRENT) @@ -216,8 +217,8 @@ public class EurekaClientAutoConfiguration { @Autowired private ApplicationContext context; - @Autowired(required = false) - private DiscoveryClientOptionalArgs optionalArgs; + @Autowired + private AbstractDiscoveryClientOptionalArgs optionalArgs; @Bean(destroyMethod = "shutdown") @ConditionalOnMissingBean(value = EurekaClient.class, search = SearchStrategy.CURRENT) diff --git a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/config/DiscoveryClientOptionalArgsConfiguration.java b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/config/DiscoveryClientOptionalArgsConfiguration.java new file mode 100644 index 00000000..d0439afb --- /dev/null +++ b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/config/DiscoveryClientOptionalArgsConfiguration.java @@ -0,0 +1,48 @@ +/* + * Copyright 2017 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.cloud.netflix.eureka.config; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; +import org.springframework.boot.autoconfigure.condition.SearchStrategy; +import org.springframework.cloud.netflix.eureka.MutableDiscoveryClientOptionalArgs; +import org.springframework.cloud.netflix.eureka.http.RestTemplateDiscoveryClientOptionalArgs; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.netflix.discovery.AbstractDiscoveryClientOptionalArgs; + +/** + * @author Daniel Lavoie + */ +@Configuration +public class DiscoveryClientOptionalArgsConfiguration { + @Bean + @ConditionalOnMissingClass("com.sun.jersey.api.client.filter.ClientFilter") + @ConditionalOnMissingBean(value = AbstractDiscoveryClientOptionalArgs.class, search = SearchStrategy.CURRENT) + public RestTemplateDiscoveryClientOptionalArgs restTemplateDiscoveryClientOptionalArgs() { + return new RestTemplateDiscoveryClientOptionalArgs(); + } + + @Bean + @ConditionalOnClass(name = "com.sun.jersey.api.client.filter.ClientFilter") + @ConditionalOnMissingBean(value = AbstractDiscoveryClientOptionalArgs.class, search = SearchStrategy.CURRENT) + public MutableDiscoveryClientOptionalArgs discoveryClientOptionalArgs() { + return new MutableDiscoveryClientOptionalArgs(); + } +} diff --git a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/EurekaApplications.java b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/EurekaApplications.java new file mode 100644 index 00000000..44906b1b --- /dev/null +++ b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/EurekaApplications.java @@ -0,0 +1,40 @@ +/* + * Copyright 2017 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.cloud.netflix.eureka.http; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.netflix.discovery.shared.Application; +import com.netflix.discovery.shared.Applications; + +/** + * A simple wrapper class for {@link Applications} that insure proprer Jackson + * serialization through the JsonPropert overwrites. + * + * @author Daniel Lavoie + */ +public class EurekaApplications extends com.netflix.discovery.shared.Applications { + + @JsonCreator + public EurekaApplications(@JsonProperty("apps__hashcode") String appsHashCode, + @JsonProperty("versions__delta") Long versionDelta, + @JsonProperty("application") List registeredApplications) { + super(appsHashCode, versionDelta, registeredApplications); + } +} \ No newline at end of file diff --git a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/RestTemplateDiscoveryClientOptionalArgs.java b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/RestTemplateDiscoveryClientOptionalArgs.java new file mode 100644 index 00000000..b0eba96f --- /dev/null +++ b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/RestTemplateDiscoveryClientOptionalArgs.java @@ -0,0 +1,29 @@ +/* + * Copyright 2017 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.cloud.netflix.eureka.http; + +import com.netflix.discovery.AbstractDiscoveryClientOptionalArgs; + +/** + * @author Daniel Lavoie + */ +public class RestTemplateDiscoveryClientOptionalArgs + extends AbstractDiscoveryClientOptionalArgs { + public RestTemplateDiscoveryClientOptionalArgs() { + setTransportClientFactories(new RestTemplateTransportClientFactories()); + } +} diff --git a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/RestTemplateEurekaHttpClient.java b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/RestTemplateEurekaHttpClient.java new file mode 100644 index 00000000..12f205b4 --- /dev/null +++ b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/RestTemplateEurekaHttpClient.java @@ -0,0 +1,227 @@ +/* + * Copyright 2017 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.cloud.netflix.eureka.http; + +import static com.netflix.discovery.shared.transport.EurekaHttpResponse.anEurekaHttpResponse; + +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; + +import com.netflix.appinfo.InstanceInfo; +import com.netflix.appinfo.InstanceInfo.InstanceStatus; +import com.netflix.discovery.shared.Application; +import com.netflix.discovery.shared.Applications; +import com.netflix.discovery.shared.transport.EurekaHttpClient; +import com.netflix.discovery.shared.transport.EurekaHttpResponse; +import com.netflix.discovery.shared.transport.EurekaHttpResponse.EurekaHttpResponseBuilder; +import com.netflix.discovery.util.StringUtil; + +/** + * @author Daniel Lavoie + */ +public class RestTemplateEurekaHttpClient implements EurekaHttpClient { + + protected final Log logger = LogFactory.getLog(getClass()); + + private RestTemplate restTemplate; + private String serviceUrl; + + public RestTemplateEurekaHttpClient(RestTemplate restTemplate, String serviceUrl) { + this.restTemplate = restTemplate; + this.serviceUrl = serviceUrl; + } + + @Override + public EurekaHttpResponse register(InstanceInfo info) { + String urlPath = serviceUrl + "apps/" + info.getAppName(); + + HttpHeaders headers = new HttpHeaders(); + headers.add(HttpHeaders.ACCEPT_ENCODING, "gzip"); + headers.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE); + + ResponseEntity response = restTemplate.exchange(urlPath, HttpMethod.POST, + new HttpEntity(info, headers), Void.class); + + return anEurekaHttpResponse(response.getStatusCodeValue()) + .headers(headersOf(response)).build(); + } + + @Override + public EurekaHttpResponse cancel(String appName, String id) { + String urlPath = serviceUrl + "apps/" + appName + '/' + id; + + ResponseEntity response = restTemplate.exchange(urlPath, HttpMethod.DELETE, + null, Void.class); + + return anEurekaHttpResponse(response.getStatusCodeValue()) + .headers(headersOf(response)).build(); + } + + @Override + public EurekaHttpResponse sendHeartBeat(String appName, String id, + InstanceInfo info, InstanceStatus overriddenStatus) { + String urlPath = serviceUrl + "apps/" + appName + '/' + id + "?status=" + + info.getStatus().toString() + "&lastDirtyTimestamp=" + + info.getLastDirtyTimestamp().toString() + (overriddenStatus != null + ? "&overriddenstatus=" + overriddenStatus.name() : ""); + + ResponseEntity response = restTemplate.exchange(urlPath, + HttpMethod.PUT, null, InstanceInfo.class); + + EurekaHttpResponseBuilder eurekaResponseBuilder = anEurekaHttpResponse( + response.getStatusCodeValue(), InstanceInfo.class) + .headers(headersOf(response)); + + if (response.hasBody()) + eurekaResponseBuilder.entity(response.getBody()); + + return eurekaResponseBuilder.build(); + } + + @Override + public EurekaHttpResponse statusUpdate(String appName, String id, + InstanceStatus newStatus, InstanceInfo info) { + String urlPath = serviceUrl + "apps/" + appName + '/' + id + "?status=" + + newStatus.name() + "&lastDirtyTimestamp=" + + info.getLastDirtyTimestamp().toString(); + + ResponseEntity response = restTemplate.exchange(urlPath, HttpMethod.PUT, + null, Void.class); + + return anEurekaHttpResponse(response.getStatusCodeValue()) + .headers(headersOf(response)).build(); + } + + @Override + public EurekaHttpResponse deleteStatusOverride(String appName, String id, + InstanceInfo info) { + String urlPath = serviceUrl + "apps/" + appName + '/' + id + + "/status?lastDirtyTimestamp=" + info.getLastDirtyTimestamp().toString(); + + ResponseEntity response = restTemplate.exchange(urlPath, HttpMethod.DELETE, + null, Void.class); + + return anEurekaHttpResponse(response.getStatusCodeValue()) + .headers(headersOf(response)).build(); + } + + @Override + public EurekaHttpResponse getApplications(String... regions) { + return getApplicationsInternal("apps/", regions); + } + + private EurekaHttpResponse getApplicationsInternal(String urlPath, + String[] regions) { + String url = serviceUrl + urlPath; + + if (regions != null && regions.length > 0) + urlPath = (urlPath.contains("?") ? "&" : "?") + "regions=" + + StringUtil.join(regions); + + ResponseEntity response = restTemplate.exchange(url, + HttpMethod.GET, null, EurekaApplications.class); + + return anEurekaHttpResponse(response.getStatusCodeValue(), + response.getStatusCode().value() == HttpStatus.OK.value() + && response.hasBody() ? (Applications) response.getBody() : null) + .headers(headersOf(response)).build(); + } + + @Override + public EurekaHttpResponse getDelta(String... regions) { + return getApplicationsInternal("apps/delta", regions); + } + + @Override + public EurekaHttpResponse getVip(String vipAddress, String... regions) { + return getApplicationsInternal("vips/" + vipAddress, regions); + } + + @Override + public EurekaHttpResponse getSecureVip(String secureVipAddress, + String... regions) { + return getApplicationsInternal("svips/" + secureVipAddress, regions); + } + + @Override + public EurekaHttpResponse getApplication(String appName) { + String urlPath = serviceUrl + "apps/" + appName; + + ResponseEntity response = restTemplate.exchange(urlPath, + HttpMethod.GET, null, Application.class); + + Application application = response.getStatusCodeValue() == HttpStatus.OK.value() + && response.hasBody() ? response.getBody() : null; + + return anEurekaHttpResponse(response.getStatusCodeValue(), application) + .headers(headersOf(response)).build(); + } + + @Override + public EurekaHttpResponse getInstance(String appName, String id) { + return getInstanceInternal("apps/" + appName + '/' + id); + } + + @Override + public EurekaHttpResponse getInstance(String id) { + return getInstanceInternal("instances/" + id); + } + + private EurekaHttpResponse getInstanceInternal(String urlPath) { + urlPath = serviceUrl + urlPath; + + ResponseEntity response = restTemplate.exchange(urlPath, + HttpMethod.GET, null, InstanceInfo.class); + + return anEurekaHttpResponse(response.getStatusCodeValue(), + response.getStatusCodeValue() == HttpStatus.OK.value() + && response.hasBody() ? response.getBody() : null) + .headers(headersOf(response)).build(); + } + + @Override + public void shutdown() { + // Nothing to do + } + + private static Map headersOf(ResponseEntity response) { + HttpHeaders httpHeaders = response.getHeaders(); + if (httpHeaders == null || httpHeaders.isEmpty()) { + return Collections.emptyMap(); + } + Map headers = new HashMap<>(); + for (Entry> entry : httpHeaders.entrySet()) { + if (!entry.getValue().isEmpty()) { + headers.put(entry.getKey(), entry.getValue().get(0)); + } + } + return headers; + } +} diff --git a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/RestTemplateTransportClientFactories.java b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/RestTemplateTransportClientFactories.java new file mode 100644 index 00000000..f2877be7 --- /dev/null +++ b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/RestTemplateTransportClientFactories.java @@ -0,0 +1,46 @@ +/* + * Copyright 2017 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.cloud.netflix.eureka.http; + +import java.util.Collection; + +import com.netflix.appinfo.InstanceInfo; +import com.netflix.discovery.EurekaClientConfig; +import com.netflix.discovery.shared.transport.TransportClientFactory; +import com.netflix.discovery.shared.transport.jersey.EurekaJerseyClient; +import com.netflix.discovery.shared.transport.jersey.TransportClientFactories; + +/** + * @author Daniel Lavoie + */ +public class RestTemplateTransportClientFactories + implements TransportClientFactories { + + @Override + public TransportClientFactory newTransportClientFactory( + Collection additionalFilters, EurekaJerseyClient providedJerseyClient) { + throw new UnsupportedOperationException(); + } + + @Override + public TransportClientFactory newTransportClientFactory( + EurekaClientConfig clientConfig, Collection additionalFilters, + InstanceInfo myInstanceInfo) { + return new RestTemplateTransportClientFactory(); + } + +} diff --git a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/RestTemplateTransportClientFactory.java b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/RestTemplateTransportClientFactory.java new file mode 100644 index 00000000..00c8f9d3 --- /dev/null +++ b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/RestTemplateTransportClientFactory.java @@ -0,0 +1,98 @@ +/* + * Copyright 2017 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.cloud.netflix.eureka.http; + +import java.net.URI; +import java.net.URISyntaxException; + +import org.springframework.http.client.support.BasicAuthorizationInterceptor; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.netflix.discovery.shared.resolver.EurekaEndpoint; +import com.netflix.discovery.shared.transport.EurekaHttpClient; +import com.netflix.discovery.shared.transport.TransportClientFactory; + +/** + * Provides the custom {@link RestTemplate} required by the + * {@link RestTemplateEurekaHttpClient}. Relies on Jackson for serialization and + * deserialization. + * + * @author Daniel Lavoie + */ +public class RestTemplateTransportClientFactory implements TransportClientFactory { + + @Override + public EurekaHttpClient newClient(EurekaEndpoint serviceUrl) { + return new RestTemplateEurekaHttpClient(restTemplate(serviceUrl.getServiceUrl()), + serviceUrl.getServiceUrl()); + } + + private RestTemplate restTemplate(String serviceUrl) { + RestTemplate restTemplate = new RestTemplate(); + try { + URI serviceURI = new URI(serviceUrl); + if (serviceURI.getUserInfo() != null) { + String[] credentials = serviceURI.getUserInfo().split(":"); + if (credentials.length == 2) { + restTemplate.getInterceptors().add(new BasicAuthorizationInterceptor( + credentials[0], credentials[1])); + } + } + } + catch (URISyntaxException ignore) { + + } + + restTemplate.getMessageConverters().add(0, mappingJacksonHttpMessageConverter()); + + return restTemplate; + } + + /** + * Provides the serialization configurations required by the Eureka Server. JSON + * content exchanged with eureka requires a root node matching the entity being + * serialized or deserialized. Achived with + * {@link SerializationFeature.WRAP_ROOT_VALUE} and + * {@link DeserializationFeature.UNWRAP_ROOT_VALUE}. + * {@link PropertyNamingStrategy.SnakeCaseStrategy} is applied to the underlying + * {@link ObjectMapper}. + * + * + * @return + */ + public MappingJackson2HttpMessageConverter mappingJacksonHttpMessageConverter() { + MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); + converter.setObjectMapper(new ObjectMapper() + .setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE)); + + converter.getObjectMapper().configure(SerializationFeature.WRAP_ROOT_VALUE, true); + converter.getObjectMapper().configure(DeserializationFeature.UNWRAP_ROOT_VALUE, + true); + + return converter; + } + + @Override + public void shutdown() { + } + +} diff --git a/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/config/JerseyOptionalArgsConfigurationTest.java b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/config/JerseyOptionalArgsConfigurationTest.java new file mode 100644 index 00000000..ed2930a1 --- /dev/null +++ b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/config/JerseyOptionalArgsConfigurationTest.java @@ -0,0 +1,45 @@ +/* + * Copyright 2017 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.cloud.netflix.eureka.config; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; +import org.springframework.cloud.netflix.eureka.sample.EurekaSampleApplication; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.netflix.discovery.DiscoveryClient.DiscoveryClientOptionalArgs; + +/** + * @author Daniel Lavoie + */ +@DirtiesContext +@RunWith(SpringJUnit4ClassRunner.class) +@SpringBootTest(classes = EurekaSampleApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT) +public class JerseyOptionalArgsConfigurationTest { + @Autowired + private DiscoveryClientOptionalArgs optionalArgs; + + @Test + public void contextLoads() { + Assert.assertNotNull(optionalArgs); + } +} diff --git a/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/config/RestTemplateOptionalArgsConfigurationTest.java b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/config/RestTemplateOptionalArgsConfigurationTest.java new file mode 100644 index 00000000..f993dbce --- /dev/null +++ b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/config/RestTemplateOptionalArgsConfigurationTest.java @@ -0,0 +1,46 @@ +/* + * Copyright 2017 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.cloud.netflix.eureka.config; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; +import org.springframework.cloud.ClassPathExclusions; +import org.springframework.cloud.FilteredClassPathRunner; +import org.springframework.cloud.netflix.eureka.http.RestTemplateDiscoveryClientOptionalArgs; +import org.springframework.cloud.netflix.eureka.sample.EurekaSampleApplication; +import org.springframework.context.ConfigurableApplicationContext; + +/** + * @author Daniel Lavoie + */ +@RunWith(FilteredClassPathRunner.class) +@ClassPathExclusions({ "jersey-client-*", "jersey-core-*", "jersey-apache-client4-*" }) +@SpringBootTest(classes = EurekaSampleApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT) +public class RestTemplateOptionalArgsConfigurationTest { + @Test + public void contextLoads() { + try (ConfigurableApplicationContext context = new SpringApplicationBuilder() + .web(false).sources(EurekaSampleApplication.class).run()) { + Assert.assertNotNull( + context.getBean(RestTemplateDiscoveryClientOptionalArgs.class)); + } + } +} diff --git a/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/http/EurekaServerMockApplication.java b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/http/EurekaServerMockApplication.java new file mode 100644 index 00000000..50ee6263 --- /dev/null +++ b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/http/EurekaServerMockApplication.java @@ -0,0 +1,117 @@ +/* + * Copyright 2017 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.cloud.netflix.eureka.http; + +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpStatus; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestController; + +import com.netflix.appinfo.InstanceInfo; +import com.netflix.discovery.shared.Application; +import com.netflix.discovery.shared.Applications; + +/** + * Mocked Eureka Server + * + * @author Daniel Lavoie + */ +@Configuration +@RestController +@SpringBootApplication +public class EurekaServerMockApplication { + private static final InstanceInfo INFO = new InstanceInfo(null, null, null, null, + null, null, null, null, null, null, null, null, null, 0, null, null, null, + null, null, null, null, 0l, 0l, null, null); + + /** + * Simulates Eureka Server own's serialization. + * @return + */ + @Bean + public MappingJackson2HttpMessageConverter mappingJacksonHttpMessageConverter() { + return new RestTemplateTransportClientFactory() + .mappingJacksonHttpMessageConverter(); + } + + @ResponseStatus(HttpStatus.OK) + @PostMapping("/apps/{appName}") + public void register(@PathVariable String appName, + @RequestBody InstanceInfo instanceInfo) { + // Nothing to do + } + + @ResponseStatus(HttpStatus.OK) + @DeleteMapping("/apps/{appName}/{id}") + public void cancel(@PathVariable String appName, @PathVariable String id) { + + } + + @ResponseStatus(HttpStatus.OK) + @PutMapping(value = "/apps/{appName}/{id}", params = { "status", + "lastDirtyTimestamp" }) + public InstanceInfo sendHeartBeat(@PathVariable String appName, + @PathVariable String id, @RequestParam String status, + @RequestParam String lastDirtyTimestamp, + @RequestParam(required = false) String overriddenstatus) { + return new InstanceInfo(null, null, null, null, null, null, null, null, null, + null, null, null, null, 0, null, null, null, null, null, null, null, 0l, + 0l, null, null); + } + + @ResponseStatus(HttpStatus.OK) + @PutMapping(value = "/apps/{appName}/{id}/status", params = { "value", + "lastDirtyTimestamp" }) + public void statusUpdate(@PathVariable String appName, @PathVariable String id, + @RequestParam String value, @RequestParam String lastDirtyTimestamp) { + + } + + @ResponseStatus(HttpStatus.OK) + @DeleteMapping(value = "/apps/{appName}/{id}/status", params = "lastDirtyTimestamp") + public void deleteStatusOverride(@PathVariable String appName, + @PathVariable String id, @RequestParam String lastDirtyTimestamp) { + + } + + @GetMapping(value = { "/apps", "/apps/delta", "/vips/{address}", "/svips/{address}" }) + public Applications getApplications(@PathVariable(required = false) String address, + @RequestParam(required = false) String regions) { + return new Applications(); + } + + @GetMapping(value = "/apps/{appName}") + public Application getApplication(@PathVariable String appName) { + return new Application(); + } + + @GetMapping(value = { "/apps/{appName}/{id}", "/instances/{id}" }) + public InstanceInfo getInstance(@PathVariable(required = false) String appName, + @PathVariable String id) { + return INFO; + } +} diff --git a/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/http/RestTemplateEurekaHttpClientTest.java b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/http/RestTemplateEurekaHttpClientTest.java new file mode 100644 index 00000000..e02f50f3 --- /dev/null +++ b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/http/RestTemplateEurekaHttpClientTest.java @@ -0,0 +1,139 @@ +/* + * Copyright 2017 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.cloud.netflix.eureka.http; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; +import org.springframework.cloud.commons.util.InetUtils; +import org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean; +import org.springframework.http.HttpStatus; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.netflix.appinfo.InstanceInfo; +import com.netflix.appinfo.InstanceInfo.InstanceStatus; +import com.netflix.appinfo.providers.EurekaConfigBasedInstanceInfoProvider; +import com.netflix.discovery.shared.resolver.DefaultEndpoint; +import com.netflix.discovery.shared.transport.EurekaHttpClient; + +/** + * @author Daniel Lavoie + */ +@RunWith(SpringJUnit4ClassRunner.class) +@SpringBootTest(classes = EurekaServerMockApplication.class, properties = { "debug=true", + "security.basic.enabled=true" }, webEnvironment = WebEnvironment.RANDOM_PORT) +@DirtiesContext +public class RestTemplateEurekaHttpClientTest { + @Autowired + private InetUtils inetUtils; + + @Value("http://${security.user.name}:${security.user.password}@localhost:${local.server.port}") + private String serviceUrl; + + private EurekaHttpClient eurekaHttpClient; + private InstanceInfo info; + + @Before + public void setup() { + eurekaHttpClient = new RestTemplateTransportClientFactory() + .newClient(new DefaultEndpoint(serviceUrl)); + + EurekaInstanceConfigBean config = new EurekaInstanceConfigBean(inetUtils); + + String appname = "customapp"; + config.setIpAddress("127.0.0.1"); + config.setHostname("localhost"); + config.setAppname(appname); + config.setVirtualHostName(appname); + config.setSecureVirtualHostName(appname); + config.setNonSecurePort(4444); + config.setInstanceId("127.0.0.1:customapp:4444"); + + info = new EurekaConfigBasedInstanceInfoProvider(config).get(); + } + + @Test + public void testRegister() { + Assert.assertEquals(HttpStatus.OK.value(), + eurekaHttpClient.register(info).getStatusCode()); + } + + @Test + public void testCancel() { + Assert.assertEquals(HttpStatus.OK.value(), + eurekaHttpClient.cancel("test", "test").getStatusCode()); + } + + @Test + public void testSendHeartBeat() { + Assert.assertEquals(HttpStatus.OK.value(), eurekaHttpClient + .sendHeartBeat("test", "test", info, null).getStatusCode()); + } + + @Test + public void testStatusUpdate() { + Assert.assertEquals(HttpStatus.OK.value(), eurekaHttpClient + .statusUpdate("test", "test", InstanceStatus.UP, info).getStatusCode()); + } + + @Test + public void testDeleteStatusOverride() { + Assert.assertEquals(HttpStatus.OK.value(), eurekaHttpClient + .deleteStatusOverride("test", "test", info).getStatusCode()); + } + + @Test + public void testGetApplications() { + Assert.assertNotNull(eurekaHttpClient.getApplications().getEntity()); + Assert.assertNotNull(eurekaHttpClient.getApplications("us", "eu").getEntity()); + } + + @Test + public void testGetDelta() { + eurekaHttpClient.getDelta().getEntity(); + eurekaHttpClient.getDelta("us", "eu").getEntity(); + } + + @Test + public void testGetVips() { + eurekaHttpClient.getVip("test"); + eurekaHttpClient.getVip("test", "us", "eu"); + } + + @Test + public void testGetSecureVip() { + eurekaHttpClient.getSecureVip("test"); + eurekaHttpClient.getSecureVip("test", "us", "eu"); + } + + @Test + public void testGetApplication() { + eurekaHttpClient.getApplication("test"); + } + + @Test + public void testGetInstance() { + eurekaHttpClient.getInstance("test"); + eurekaHttpClient.getInstance("test", "test"); + } +} diff --git a/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/http/RestTemplateTransportClientFactoriesTest.java b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/http/RestTemplateTransportClientFactoriesTest.java new file mode 100644 index 00000000..88d02636 --- /dev/null +++ b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/http/RestTemplateTransportClientFactoriesTest.java @@ -0,0 +1,29 @@ +/* + * Copyright 2017 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.cloud.netflix.eureka.http; + +import org.junit.Test; + +/** + * @author Daniel Lavoie + */ +public class RestTemplateTransportClientFactoriesTest { + @Test(expected = UnsupportedOperationException.class) + public void testJerseyIsUnsuported() { + new RestTemplateTransportClientFactories().newTransportClientFactory(null, null); + } +} diff --git a/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/http/RestTemplateTransportClientFactoryTest.java b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/http/RestTemplateTransportClientFactoryTest.java new file mode 100644 index 00000000..50de78ae --- /dev/null +++ b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/http/RestTemplateTransportClientFactoryTest.java @@ -0,0 +1,57 @@ +/* + * Copyright 2017 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.cloud.netflix.eureka.http; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import com.netflix.discovery.shared.resolver.DefaultEndpoint; + +/** + * @author Daniel Lavoie + */ +public class RestTemplateTransportClientFactoryTest { + private RestTemplateTransportClientFactory transportClientFatory; + + @Before + public void setup() { + transportClientFatory = new RestTemplateTransportClientFactory(); + } + + @Test + public void testWithoutUserInfo() { + transportClientFatory.newClient(new DefaultEndpoint("http://localhost:8761")); + } + + @Test + public void testInvalidUserInfo() { + transportClientFatory + .newClient(new DefaultEndpoint("http://test@localhost:8761")); + } + + @Test + public void testUserInfo() { + transportClientFatory + .newClient(new DefaultEndpoint("http://test:test@localhost:8761")); + } + + @After + public void shutdown() { + transportClientFatory.shutdown(); + } +} diff --git a/spring-cloud-netflix-eureka-client/src/test/resources/application.yml b/spring-cloud-netflix-eureka-client/src/test/resources/application.yml index 7423d1f9..3e83e31a 100644 --- a/spring-cloud-netflix-eureka-client/src/test/resources/application.yml +++ b/spring-cloud-netflix-eureka-client/src/test/resources/application.yml @@ -2,4 +2,11 @@ foo3: ribbon: NFLoadBalancerPingClassName: com.netflix.loadbalancer.DummyPing - NIWSServerListClassName: com.netflix.loadbalancer.ConfigurationBasedServerList \ No newline at end of file + NIWSServerListClassName: com.netflix.loadbalancer.ConfigurationBasedServerList + +security: + basic: + enabled: false + user: + name: test + password: test \ No newline at end of file From bbac5a730f673f55f0ff86cb5f94fa21aecf135c Mon Sep 17 00:00:00 2001 From: Daniel Lavoie Date: Fri, 21 Jul 2017 21:59:32 +0200 Subject: [PATCH 4/5] Rename starters to include `-netflix-` (#1886) Fixes gh-665 --- .../main/asciidoc/spring-cloud-netflix.adoc | 26 ++++---- pom.xml | 1 + .../netflix/feign/FeignClientFactoryBean.java | 2 +- spring-cloud-netflix-dependencies/pom.xml | 65 +++++++++++++++++++ spring-cloud-starter-archaius/pom.xml | 41 +----------- spring-cloud-starter-atlas/pom.xml | 17 +---- spring-cloud-starter-eureka-server/pom.xml | 21 +----- spring-cloud-starter-eureka/pom.xml | 43 +----------- spring-cloud-starter-feign/pom.xml | 37 +---------- .../pom.xml | 17 +---- spring-cloud-starter-hystrix/pom.xml | 25 +------ spring-cloud-starter-netflix/pom.xml | 29 +++++++++ .../pom.xml | 62 ++++++++++++++++++ .../main/resources/META-INF/spring.provides | 0 .../pom.xml | 38 +++++++++++ .../resources/META-INF/spring.provides | 0 .../pom.xml | 64 ++++++++++++++++++ .../main/resources/META-INF/spring.provides | 0 .../pom.xml | 41 ++++++++++++ .../main/resources/META-INF/spring.provides | 0 .../pom.xml | 38 +++++++++++ .../main/resources/META-INF/spring.provides | 0 .../pom.xml | 46 +++++++++++++ .../main/resources/META-INF/spring.provides | 0 .../pom.xml | 54 +++++++++++++++ .../main/resources/META-INF/spring.provides | 0 .../.jdk8 | 0 .../pom.xml | 30 +++++++++ .../main/resources/META-INF/spring.provides | 0 .../.jdk8 | 0 .../pom.xml | 29 +++++++++ .../main/resources/META-INF/spring.provides | 0 .../.jdk8 | 0 .../pom.xml | 50 ++++++++++++++ .../main/resources/META-INF/spring.provides | 0 .../pom.xml | 62 ++++++++++++++++++ .../main/resources/META-INF/spring.provides | 0 .../spring-cloud-starter-netflix-zuul/pom.xml | 50 ++++++++++++++ .../main/resources/META-INF/spring.provides | 0 .../spring-cloud-starter-openfeign/pom.xml | 58 +++++++++++++++++ .../main/resources/META-INF/spring.provides | 0 spring-cloud-starter-ribbon/pom.xml | 33 +--------- spring-cloud-starter-spectator/pom.xml | 9 +-- spring-cloud-starter-turbine-amqp/pom.xml | 9 +-- spring-cloud-starter-turbine-stream/.jdk8 | 0 spring-cloud-starter-turbine-stream/pom.xml | 54 +-------------- spring-cloud-starter-turbine/pom.xml | 40 +----------- spring-cloud-starter-zuul/pom.xml | 29 +-------- 48 files changed, 770 insertions(+), 350 deletions(-) create mode 100644 spring-cloud-starter-netflix/pom.xml create mode 100644 spring-cloud-starter-netflix/spring-cloud-starter-netflix-archaius/pom.xml rename {spring-cloud-starter-archaius => spring-cloud-starter-netflix/spring-cloud-starter-netflix-archaius}/src/main/resources/META-INF/spring.provides (100%) create mode 100644 spring-cloud-starter-netflix/spring-cloud-starter-netflix-atlas/pom.xml rename {spring-cloud-starter-atlas/src/main => spring-cloud-starter-netflix/spring-cloud-starter-netflix-atlas/src/main/resources}/resources/META-INF/spring.provides (100%) create mode 100644 spring-cloud-starter-netflix/spring-cloud-starter-netflix-eureka-client/pom.xml rename {spring-cloud-starter-eureka-server => spring-cloud-starter-netflix/spring-cloud-starter-netflix-eureka-client}/src/main/resources/META-INF/spring.provides (100%) create mode 100644 spring-cloud-starter-netflix/spring-cloud-starter-netflix-eureka-server/pom.xml rename {spring-cloud-starter-eureka => spring-cloud-starter-netflix/spring-cloud-starter-netflix-eureka-server}/src/main/resources/META-INF/spring.provides (100%) create mode 100644 spring-cloud-starter-netflix/spring-cloud-starter-netflix-hystrix-dashboard/pom.xml rename {spring-cloud-starter-feign => spring-cloud-starter-netflix/spring-cloud-starter-netflix-hystrix-dashboard}/src/main/resources/META-INF/spring.provides (100%) create mode 100644 spring-cloud-starter-netflix/spring-cloud-starter-netflix-hystrix/pom.xml rename {spring-cloud-starter-hystrix => spring-cloud-starter-netflix/spring-cloud-starter-netflix-hystrix}/src/main/resources/META-INF/spring.provides (100%) create mode 100644 spring-cloud-starter-netflix/spring-cloud-starter-netflix-ribbon/pom.xml rename {spring-cloud-starter-ribbon => spring-cloud-starter-netflix/spring-cloud-starter-netflix-ribbon}/src/main/resources/META-INF/spring.provides (100%) rename {spring-cloud-netflix-turbine-stream => spring-cloud-starter-netflix/spring-cloud-starter-netflix-spectator}/.jdk8 (100%) create mode 100644 spring-cloud-starter-netflix/spring-cloud-starter-netflix-spectator/pom.xml rename {spring-cloud-starter-spectator => spring-cloud-starter-netflix/spring-cloud-starter-netflix-spectator}/src/main/resources/META-INF/spring.provides (100%) rename {spring-cloud-starter-spectator => spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-amqp}/.jdk8 (100%) create mode 100644 spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-amqp/pom.xml rename {spring-cloud-starter-turbine-amqp => spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-amqp}/src/main/resources/META-INF/spring.provides (100%) rename {spring-cloud-starter-turbine-amqp => spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-stream}/.jdk8 (100%) create mode 100644 spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-stream/pom.xml rename {spring-cloud-starter-turbine-stream => spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-stream}/src/main/resources/META-INF/spring.provides (100%) create mode 100644 spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine/pom.xml rename {spring-cloud-starter-turbine => spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine}/src/main/resources/META-INF/spring.provides (100%) create mode 100644 spring-cloud-starter-netflix/spring-cloud-starter-netflix-zuul/pom.xml rename {spring-cloud-starter-zuul => spring-cloud-starter-netflix/spring-cloud-starter-netflix-zuul}/src/main/resources/META-INF/spring.provides (100%) create mode 100644 spring-cloud-starter-netflix/spring-cloud-starter-openfeign/pom.xml rename {spring-cloud-starter-hystrix-dashboard => spring-cloud-starter-netflix/spring-cloud-starter-openfeign}/src/main/resources/META-INF/spring.provides (100%) delete mode 100644 spring-cloud-starter-turbine-stream/.jdk8 diff --git a/docs/src/main/asciidoc/spring-cloud-netflix.adoc b/docs/src/main/asciidoc/spring-cloud-netflix.adoc index b87a3008..b8357e1c 100644 --- a/docs/src/main/asciidoc/spring-cloud-netflix.adoc +++ b/docs/src/main/asciidoc/spring-cloud-netflix.adoc @@ -19,7 +19,7 @@ Service Discovery is one of the key tenets of a microservice based architecture. === How to Include Eureka Client To include Eureka Client in your project use the starter with group `org.springframework.cloud` -and artifact id `spring-cloud-starter-eureka`. See the http://projects.spring.io/spring-cloud/[Spring Cloud Project page] +and artifact id `spring-cloud-starter-netflix-eureka-client`. See the http://projects.spring.io/spring-cloud/[Spring Cloud Project page] for details on setting up your build system with the current Spring Cloud Release Train. === Registering with Eureka @@ -368,7 +368,7 @@ eureka.client.preferSameZoneEureka = true === How to Include Eureka Server To include Eureka Server in your project use the starter with group `org.springframework.cloud` -and artifact id `spring-cloud-starter-eureka-server`. See the http://projects.spring.io/spring-cloud/[Spring Cloud Project page] +and artifact id `spring-cloud-starter-netflix-eureka-server`. See the http://projects.spring.io/spring-cloud/[Spring Cloud Project page] for details on setting up your build system with the current Spring Cloud Release Train. [[spring-cloud-running-eureka-server]] @@ -397,7 +397,7 @@ Eureka background reading: see https://github.com/cfregly/fluxcapacitor/wiki/Net [TIP] ==== -Due to Gradle's dependency resolution rules and the lack of a parent bom feature, simply depending on spring-cloud-starter-eureka-server can cause failures on application startup. To remedy this the Spring Boot Gradle plugin must be added and the Spring cloud starter parent bom must be imported like so: +Due to Gradle's dependency resolution rules and the lack of a parent bom feature, simply depending on spring-cloud-starter-netflix-eureka-server can cause failures on application startup. To remedy this the Spring Boot Gradle plugin must be added and the Spring cloud starter parent bom must be imported like so: .build.gradle [source,java,indent=0] @@ -542,7 +542,7 @@ Having an open circuit stops cascading failures and allows overwhelmed or failin === How to Include Hystrix To include Hystrix in your project use the starter with group `org.springframework.cloud` -and artifact id `spring-cloud-starter-hystrix`. See the http://projects.spring.io/spring-cloud/[Spring Cloud Project page] +and artifact id `spring-cloud-starter-netflix-hystrix`. See the http://projects.spring.io/spring-cloud/[Spring Cloud Project page] for details on setting up your build system with the current Spring Cloud Release Train. Example boot app: @@ -654,14 +654,14 @@ be slightly more than three seconds. === How to Include Hystrix Dashboard To include the Hystrix Dashboard in your project use the starter with group `org.springframework.cloud` -and artifact id `spring-cloud-starter-hystrix-dashboard`. See the http://projects.spring.io/spring-cloud/[Spring Cloud Project page] +and artifact id `spring-cloud-starter-hystrix-netflix-dashboard`. See the http://projects.spring.io/spring-cloud/[Spring Cloud Project page] for details on setting up your build system with the current Spring Cloud Release Train. To run the Hystrix Dashboard annotate your Spring Boot main class with `@EnableHystrixDashboard`. You then visit `/hystrix` and point the dashboard to an individual instances `/hystrix.stream` endpoint in a Hystrix client application. === Turbine -Looking at an individual instances Hystrix data is not very useful in terms of the overall health of the system. https://github.com/Netflix/Turbine[Turbine] is an application that aggregates all of the relevant `/hystrix.stream` endpoints into a combined `/turbine.stream` for use in the Hystrix Dashboard. Individual instances are located via Eureka. Running Turbine is as simple as annotating your main class with the `@EnableTurbine` annotation (e.g. using spring-cloud-starter-turbine to set up the classpath). All of the documented configuration properties from https://github.com/Netflix/Turbine/wiki/Configuration-(1.x)[the Turbine 1 wiki] apply. The only difference is that the `turbine.instanceUrlSuffix` does not need the port prepended as this is handled automatically unless `turbine.instanceInsertPort=false`. +Looking at an individual instances Hystrix data is not very useful in terms of the overall health of the system. https://github.com/Netflix/Turbine[Turbine] is an application that aggregates all of the relevant `/hystrix.stream` endpoints into a combined `/turbine.stream` for use in the Hystrix Dashboard. Individual instances are located via Eureka. Running Turbine is as simple as annotating your main class with the `@EnableTurbine` annotation (e.g. using spring-cloud-starter-netflix-turbine to set up the classpath). All of the documented configuration properties from https://github.com/Netflix/Turbine/wiki/Configuration-(1.x)[the Turbine 1 wiki] apply. The only difference is that the `turbine.instanceUrlSuffix` does not need the port prepended as this is handled automatically unless `turbine.instanceInsertPort=false`. NOTE: By default, Turbine looks for the `/hystrix.stream` endpoint on a registered instance by looking up its `homePageUrl` entry in Eureka, then appending `/hystrix.stream` to it. This means that if `spring-boot-actuator` is running on its own port (which is the default), the call to `/hystrix.stream` will fail. To make turbine find the Hystrix stream at the correct port, you need to add `management.port` to the instances' metadata: @@ -702,7 +702,7 @@ turbine: clusterNameExpression: "'default'" ---- -Spring Cloud provides a `spring-cloud-starter-turbine` that has all the dependencies you need to get a Turbine server running. Just create a Spring Boot application and annotate it with `@EnableTurbine`. +Spring Cloud provides a `spring-cloud-starter-netflix-turbine` that has all the dependencies you need to get a Turbine server running. Just create a Spring Boot application and annotate it with `@EnableTurbine`. NOTE: by default Spring Cloud allows Turbine to use the host and port to allow multiple processes per host, per cluster. If you want the native Netflix behaviour built into Turbine that does _not_ allow multiple processes per host, per cluster (the key to the instance id is the hostname), then set the property `turbine.combineHostPort=false`. @@ -714,7 +714,7 @@ On the server side Just create a Spring Boot application and annotate it with `@ You can then point the Hystrix Dashboard to the Turbine Stream Server instead of individual Hystrix streams. If Turbine Stream is running on port 8989 on myhost, then put `http://myhost:8989` in the stream input field in the Hystrix Dashboard. Circuits will be prefixed by their respective serviceId, followed by a dot, then the circuit name. -Spring Cloud provides a `spring-cloud-starter-turbine-stream` that has all the dependencies you need to get a Turbine Stream server running - just add the Stream binder of your choice, e.g. `spring-cloud-starter-stream-rabbit`. You need Java 8 to run the app because it is Netty-based. +Spring Cloud provides a `spring-cloud-starter-netflix-turbine-stream` that has all the dependencies you need to get a Turbine Stream server running - just add the Stream binder of your choice, e.g. `spring-cloud-starter-stream-rabbit`. You need Java 8 to run the app because it is Netty-based. [[spring-cloud-ribbon]] == Client Side Load Balancer: Ribbon @@ -736,7 +736,7 @@ annotation). Spring Cloud creates a new ensemble as an === How to Include Ribbon To include Ribbon in your project use the starter with group `org.springframework.cloud` -and artifact id `spring-cloud-starter-ribbon`. See the http://projects.spring.io/spring-cloud/[Spring Cloud Project page] +and artifact id `spring-cloud-starter-netflix-ribbon`. See the http://projects.spring.io/spring-cloud/[Spring Cloud Project page] for details on setting up your build system with the current Spring Cloud Release Train. === Customizing the Ribbon Client @@ -956,7 +956,7 @@ https://github.com/Netflix/feign[Feign] is a declarative web service client. It === How to Include Feign To include Feign in your project use the starter with group `org.springframework.cloud` -and artifact id `spring-cloud-starter-feign`. See the http://projects.spring.io/spring-cloud/[Spring Cloud Project page] +and artifact id `spring-cloud-starter-openfeign`. See the http://projects.spring.io/spring-cloud/[Spring Cloud Project page] for details on setting up your build system with the current Spring Cloud Release Train. Example spring boot app @@ -1402,7 +1402,7 @@ NOTE: Default Hystrix isolation pattern (ExecutionIsolationStrategy) for all rou === How to Include Zuul To include Zuul in your project use the starter with group `org.springframework.cloud` -and artifact id `spring-cloud-starter-zuul`. See the http://projects.spring.io/spring-cloud/[Spring Cloud Project page] +and artifact id `spring-cloud-starter-netflix-zuul`. See the http://projects.spring.io/spring-cloud/[Spring Cloud Project page] for details on setting up your build system with the current Spring Cloud Release Train. [[netflix-zuul-reverse-proxy]] @@ -2450,7 +2450,7 @@ To enable Spectator metrics, include a dependency on `spring-boot-starter-specta ---- org.springframework.cloud - spring-cloud-starter-spectator + spring-cloud-starter-netflix-spectator ---- @@ -2554,7 +2554,7 @@ Atlas was developed by Netflix to manage dimensional time series data for near r Atlas captures operational intelligence. Whereas business intelligence is data gathered for analyzing trends over time, operational intelligence provides a picture of what is currently happening within a system. -Spring Cloud provides a `spring-cloud-starter-atlas` that has all the dependencies you need. Then just annotate your Spring Boot application with `@EnableAtlas` and provide a location for your running Atlas server with the `netflix.atlas.uri` property. +Spring Cloud provides a `spring-cloud-starter-netflix-atlas` that has all the dependencies you need. Then just annotate your Spring Boot application with `@EnableAtlas` and provide a location for your running Atlas server with the `netflix.atlas.uri` property. ==== Global tags diff --git a/pom.xml b/pom.xml index 26a5bb66..d287f39c 100644 --- a/pom.xml +++ b/pom.xml @@ -141,6 +141,7 @@ spring-cloud-starter-feign spring-cloud-starter-hystrix spring-cloud-starter-hystrix-dashboard + spring-cloud-starter-netflix spring-cloud-starter-ribbon spring-cloud-starter-spectator spring-cloud-starter-turbine diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignClientFactoryBean.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignClientFactoryBean.java index 2c61e8dd..774483af 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignClientFactoryBean.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignClientFactoryBean.java @@ -214,7 +214,7 @@ class FeignClientFactoryBean implements FactoryBean, InitializingBean, } throw new IllegalStateException( - "No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-ribbon?"); + "No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-netflix-ribbon?"); } @Override diff --git a/spring-cloud-netflix-dependencies/pom.xml b/spring-cloud-netflix-dependencies/pom.xml index 597c4c3d..3dcabe24 100644 --- a/spring-cloud-netflix-dependencies/pom.xml +++ b/spring-cloud-netflix-dependencies/pom.xml @@ -70,6 +70,71 @@ spring-cloud-starter-hystrix-dashboard ${project.version} + + org.springframework.cloud + spring-cloud-starter-netflix-archaius + ${project.version} + + + org.springframework.cloud + spring-cloud-starter-netflix-atlas + ${project.version} + + + org.springframework.cloud + spring-cloud-starter-netflix-eureka-client + ${project.version} + + + org.springframework.cloud + spring-cloud-starter-netflix-eureka-server + ${project.version} + + + org.springframework.cloud + spring-cloud-starter-openfeign + ${project.version} + + + org.springframework.cloud + spring-cloud-starter-netflix-hystrix + ${project.version} + + + org.springframework.cloud + spring-cloud-starter-netflix-hystrix-dashboard + ${project.version} + + + org.springframework.cloud + spring-cloud-starter-netflix-ribbon + ${project.version} + + + org.springframework.cloud + spring-cloud-starter-netflix-spectator + ${project.version} + + + org.springframework.cloud + spring-cloud-starter-netflix-turbine + ${project.version} + + + org.springframework.cloud + spring-cloud-starter-netflix-turbine-amqp + ${project.version} + + + org.springframework.cloud + spring-cloud-starter-netflix-turbine-stream + ${project.version} + + + org.springframework.cloud + spring-cloud-starter-netflix-zuul + ${project.version} + org.springframework.cloud spring-cloud-starter-ribbon diff --git a/spring-cloud-starter-archaius/pom.xml b/spring-cloud-starter-archaius/pom.xml index 293df891..0daba5bd 100644 --- a/spring-cloud-starter-archaius/pom.xml +++ b/spring-cloud-starter-archaius/pom.xml @@ -9,8 +9,9 @@ .. spring-cloud-starter-archaius + pom spring-cloud-starter-archaius - Spring Cloud Starter + Spring Cloud Starter Archaius (deprecated, please use spring-cloud-starter-netflix-archaius) https://projects.spring.io/spring-cloud Pivotal Software, Inc. @@ -22,43 +23,7 @@ org.springframework.cloud - spring-cloud-starter + spring-cloud-starter-netflix-archaius - - org.springframework.cloud - spring-cloud-netflix-core - - - com.netflix.archaius - archaius-core - - - - commons-configuration - commons-configuration - - - commons-logging - commons-logging - - - - - com.fasterxml.jackson.core - jackson-annotations - - - com.fasterxml.jackson.core - jackson-core - - - com.fasterxml.jackson.core - jackson-databind - - - com.google.guava - guava - - diff --git a/spring-cloud-starter-atlas/pom.xml b/spring-cloud-starter-atlas/pom.xml index bb7d8af0..9dc8cd79 100644 --- a/spring-cloud-starter-atlas/pom.xml +++ b/spring-cloud-starter-atlas/pom.xml @@ -9,8 +9,9 @@ .. spring-cloud-starter-atlas + pom spring-cloud-starter-atlas - Spring Cloud Starter Atlas + Spring Cloud Starter Atlas (deprecated, please use spring-cloud-starter-netflix-atlas https://projects.spring.io/spring-cloud Pivotal Software, Inc. @@ -22,19 +23,7 @@ org.springframework.cloud - spring-cloud-starter - - - org.springframework.cloud - spring-cloud-netflix-core - - - com.netflix.servo - servo-core - - - com.fasterxml.jackson.dataformat - jackson-dataformat-smile + spring-cloud-starter-netflix-atlas diff --git a/spring-cloud-starter-eureka-server/pom.xml b/spring-cloud-starter-eureka-server/pom.xml index 66760de0..060a613e 100644 --- a/spring-cloud-starter-eureka-server/pom.xml +++ b/spring-cloud-starter-eureka-server/pom.xml @@ -9,8 +9,9 @@ .. spring-cloud-starter-eureka-server + pom spring-cloud-starter-eureka-server - Spring Cloud Starter + Spring Cloud Starter Eureka Server (deprecated, please use spring-cloud-starter-netflix-eureka-server) https://projects.spring.io/spring-cloud Pivotal Software, Inc. @@ -22,23 +23,7 @@ org.springframework.cloud - spring-cloud-starter - - - org.springframework.cloud - spring-cloud-netflix-eureka-server - - - org.springframework.cloud - spring-cloud-starter-archaius - - - org.springframework.cloud - spring-cloud-starter-ribbon - - - com.netflix.ribbon - ribbon-eureka + spring-cloud-starter-netflix-eureka-server diff --git a/spring-cloud-starter-eureka/pom.xml b/spring-cloud-starter-eureka/pom.xml index 307968e1..f15d7559 100644 --- a/spring-cloud-starter-eureka/pom.xml +++ b/spring-cloud-starter-eureka/pom.xml @@ -9,8 +9,9 @@ .. spring-cloud-starter-eureka + pom spring-cloud-starter-eureka - Spring Cloud Starter + Spring Cloud Starter Eureka (deprecated, please use spring-cloud-starter-netflix-eureka-client https://projects.spring.io/spring-cloud Pivotal Software, Inc. @@ -20,47 +21,9 @@ ${basedir}/../.. - - - org.springframework.boot - spring-boot-starter-web - org.springframework.cloud - spring-cloud-starter - - - org.springframework.cloud - spring-cloud-netflix-core - - - org.springframework.cloud - spring-cloud-netflix-eureka-client - - - com.netflix.eureka - eureka-client - - - com.netflix.eureka - eureka-core - - - org.springframework.cloud - spring-cloud-starter-archaius - - - org.springframework.cloud - spring-cloud-starter-ribbon - - - com.netflix.ribbon - ribbon-eureka - - - com.thoughtworks.xstream - xstream + spring-cloud-starter-netflix-eureka-client diff --git a/spring-cloud-starter-feign/pom.xml b/spring-cloud-starter-feign/pom.xml index b8d67df0..9958a3a4 100644 --- a/spring-cloud-starter-feign/pom.xml +++ b/spring-cloud-starter-feign/pom.xml @@ -9,8 +9,9 @@ .. spring-cloud-starter-feign + pom spring-cloud-starter-feign - Spring Cloud Starter + Spring Cloud Starter Feign (deprecated, please use spring-cloud-starter-openfeign) https://projects.spring.io/spring-cloud Pivotal Software, Inc. @@ -22,39 +23,7 @@ org.springframework.cloud - spring-cloud-starter - - - org.springframework.cloud - spring-cloud-netflix-core - - - org.springframework - spring-web - - - org.springframework.cloud - spring-cloud-commons - - - io.github.openfeign - feign-core - - - io.github.openfeign - feign-slf4j - - - io.github.openfeign - feign-hystrix - - - org.springframework.cloud - spring-cloud-starter-ribbon - - - org.springframework.cloud - spring-cloud-starter-archaius + spring-cloud-starter-openfeign diff --git a/spring-cloud-starter-hystrix-dashboard/pom.xml b/spring-cloud-starter-hystrix-dashboard/pom.xml index fcf72103..310c1a02 100644 --- a/spring-cloud-starter-hystrix-dashboard/pom.xml +++ b/spring-cloud-starter-hystrix-dashboard/pom.xml @@ -9,8 +9,9 @@ .. spring-cloud-starter-hystrix-dashboard + pom spring-cloud-starter-hystrix-dashboard - Spring Cloud Hystrix Dashboard + Spring Cloud Starter Hystrix Dashboard (deprecated, please use spring-cloud-starter-hystrix-dashboard) https://projects.spring.io/spring-cloud Pivotal Software, Inc. @@ -20,21 +21,9 @@ ${basedir}/../.. - - org.springframework.boot - spring-boot-starter-web - org.springframework.cloud - spring-cloud-starter - - - org.springframework.cloud - spring-cloud-netflix-hystrix-dashboard - - - org.springframework.cloud - spring-cloud-starter-archaius + spring-cloud-starter-netflix-hystrix-dashboard diff --git a/spring-cloud-starter-hystrix/pom.xml b/spring-cloud-starter-hystrix/pom.xml index 80e7530f..98228011 100644 --- a/spring-cloud-starter-hystrix/pom.xml +++ b/spring-cloud-starter-hystrix/pom.xml @@ -9,8 +9,9 @@ .. spring-cloud-starter-hystrix + pom spring-cloud-starter-hystrix - Spring Cloud Starter + Spring Cloud Starter Hystrix (deprecated, please use spring-cloud-starter-netflix-hystrix) https://projects.spring.io/spring-cloud Pivotal Software, Inc. @@ -22,27 +23,7 @@ org.springframework.cloud - spring-cloud-starter - - - org.springframework.cloud - spring-cloud-netflix-core - - - org.springframework.cloud - spring-cloud-starter-archaius - - - com.netflix.hystrix - hystrix-core - - - com.netflix.hystrix - hystrix-metrics-event-stream - - - com.netflix.hystrix - hystrix-javanica + spring-cloud-starter-netflix-hystrix diff --git a/spring-cloud-starter-netflix/pom.xml b/spring-cloud-starter-netflix/pom.xml new file mode 100644 index 00000000..0e8c0b81 --- /dev/null +++ b/spring-cloud-starter-netflix/pom.xml @@ -0,0 +1,29 @@ + + 4.0.0 + + org.springframework.cloud + spring-cloud-netflix + 1.3.1.BUILD-SNAPSHOT + .. + + spring-cloud-starter-netflix + pom + Spring Cloud Netflix Starters + Spring Cloud Netflix Starters + + spring-cloud-starter-netflix-archaius + spring-cloud-starter-netflix-atlas + spring-cloud-starter-netflix-eureka-client + spring-cloud-starter-netflix-eureka-server + spring-cloud-starter-netflix-hystrix + spring-cloud-starter-netflix-hystrix-dashboard + spring-cloud-starter-netflix-ribbon + spring-cloud-starter-netflix-turbine + spring-cloud-starter-netflix-spectator + spring-cloud-starter-netflix-turbine-amqp + spring-cloud-starter-netflix-turbine-stream + spring-cloud-starter-netflix-zuul + spring-cloud-starter-openfeign + + \ No newline at end of file diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-archaius/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-archaius/pom.xml new file mode 100644 index 00000000..d78fdba8 --- /dev/null +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-archaius/pom.xml @@ -0,0 +1,62 @@ + + 4.0.0 + + org.springframework.cloud + spring-cloud-starter-netflix + 1.3.1.BUILD-SNAPSHOT + + spring-cloud-starter-netflix-archaius + Spring Cloud Starter Netflix Archaius + Spring Cloud Starter Netflix Archaius + https://projects.spring.io/spring-cloud + + Pivotal Software, Inc. + https://www.spring.io + + + ${basedir}/../../.. + + + + org.springframework.cloud + spring-cloud-starter + + + org.springframework.cloud + spring-cloud-netflix-core + + + com.netflix.archaius + archaius-core + + + + commons-configuration + commons-configuration + + + commons-logging + commons-logging + + + + + com.fasterxml.jackson.core + jackson-annotations + + + com.fasterxml.jackson.core + jackson-core + + + com.fasterxml.jackson.core + jackson-databind + + + com.google.guava + guava + + + + \ No newline at end of file diff --git a/spring-cloud-starter-archaius/src/main/resources/META-INF/spring.provides b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-archaius/src/main/resources/META-INF/spring.provides similarity index 100% rename from spring-cloud-starter-archaius/src/main/resources/META-INF/spring.provides rename to spring-cloud-starter-netflix/spring-cloud-starter-netflix-archaius/src/main/resources/META-INF/spring.provides diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-atlas/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-atlas/pom.xml new file mode 100644 index 00000000..bca60d6f --- /dev/null +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-atlas/pom.xml @@ -0,0 +1,38 @@ + + 4.0.0 + + org.springframework.cloud + spring-cloud-starter-netflix + 1.3.1.BUILD-SNAPSHOT + + spring-cloud-starter-netflix-atlas + Spring Cloud Starter Netflix Atlas + Spring Cloud Starter Netflix Atlas + https://projects.spring.io/spring-cloud + + Pivotal Software, Inc. + https://www.spring.io + + + ${basedir}/../../.. + + + + org.springframework.cloud + spring-cloud-starter + + + org.springframework.cloud + spring-cloud-netflix-core + + + com.netflix.servo + servo-core + + + com.fasterxml.jackson.dataformat + jackson-dataformat-smile + + + \ No newline at end of file diff --git a/spring-cloud-starter-atlas/src/main/resources/META-INF/spring.provides b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-atlas/src/main/resources/resources/META-INF/spring.provides similarity index 100% rename from spring-cloud-starter-atlas/src/main/resources/META-INF/spring.provides rename to spring-cloud-starter-netflix/spring-cloud-starter-netflix-atlas/src/main/resources/resources/META-INF/spring.provides diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-eureka-client/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-eureka-client/pom.xml new file mode 100644 index 00000000..e1960871 --- /dev/null +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-eureka-client/pom.xml @@ -0,0 +1,64 @@ + + 4.0.0 + + org.springframework.cloud + spring-cloud-starter-netflix + 1.3.1.BUILD-SNAPSHOT + + spring-cloud-starter-netflix-eureka-client + Spring Cloud Starter Netflix Eureka Client + Spring Cloud Starter Netflix Eureka Client + https://projects.spring.io/spring-cloud + + Pivotal Software, Inc. + https://www.spring.io + + + ${basedir}/../../.. + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.cloud + spring-cloud-starter + + + org.springframework.cloud + spring-cloud-netflix-core + + + org.springframework.cloud + spring-cloud-netflix-eureka-client + + + com.netflix.eureka + eureka-client + + + com.netflix.eureka + eureka-core + + + org.springframework.cloud + spring-cloud-starter-netflix-archaius + + + org.springframework.cloud + spring-cloud-starter-netflix-ribbon + + + com.netflix.ribbon + ribbon-eureka + + + com.thoughtworks.xstream + xstream + + + \ No newline at end of file diff --git a/spring-cloud-starter-eureka-server/src/main/resources/META-INF/spring.provides b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-eureka-client/src/main/resources/META-INF/spring.provides similarity index 100% rename from spring-cloud-starter-eureka-server/src/main/resources/META-INF/spring.provides rename to spring-cloud-starter-netflix/spring-cloud-starter-netflix-eureka-client/src/main/resources/META-INF/spring.provides diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-eureka-server/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-eureka-server/pom.xml new file mode 100644 index 00000000..b4d47a80 --- /dev/null +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-eureka-server/pom.xml @@ -0,0 +1,41 @@ + + 4.0.0 + + org.springframework.cloud + spring-cloud-starter-netflix + 1.3.1.BUILD-SNAPSHOT + + spring-cloud-starter-netflix-eureka-server + Spring Cloud Starter Netflix Eureka Server + Spring Cloud Starter Netflix Eureka Server + https://projects.spring.io/spring-cloud + + Pivotal Software, Inc. + https://www.spring.io + + + ${basedir}/../../.. + + + + org.springframework.cloud + spring-cloud-starter + + + org.springframework.cloud + spring-cloud-netflix-eureka-server + + + org.springframework.cloud + spring-cloud-starter-netflix-archaius + + + org.springframework.cloud + spring-cloud-starter-netflix-ribbon + + + com.netflix.ribbon + ribbon-eureka + + + \ No newline at end of file diff --git a/spring-cloud-starter-eureka/src/main/resources/META-INF/spring.provides b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-eureka-server/src/main/resources/META-INF/spring.provides similarity index 100% rename from spring-cloud-starter-eureka/src/main/resources/META-INF/spring.provides rename to spring-cloud-starter-netflix/spring-cloud-starter-netflix-eureka-server/src/main/resources/META-INF/spring.provides diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-hystrix-dashboard/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-hystrix-dashboard/pom.xml new file mode 100644 index 00000000..11baa6ac --- /dev/null +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-hystrix-dashboard/pom.xml @@ -0,0 +1,38 @@ + + 4.0.0 + + org.springframework.cloud + spring-cloud-starter-netflix + 1.3.1.BUILD-SNAPSHOT + + spring-cloud-starter-netflix-hystrix-dashboard + Spring Cloud Starter Netflix Hystrix Dashboard + Spring Cloud Starter Netflix Hystrix Dashboard + https://projects.spring.io/spring-cloud + + Pivotal Software, Inc. + https://www.spring.io + + + ${basedir}/../../.. + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.cloud + spring-cloud-starter + + + org.springframework.cloud + spring-cloud-netflix-hystrix-dashboard + + + org.springframework.cloud + spring-cloud-starter-netflix-archaius + + + \ No newline at end of file diff --git a/spring-cloud-starter-feign/src/main/resources/META-INF/spring.provides b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-hystrix-dashboard/src/main/resources/META-INF/spring.provides similarity index 100% rename from spring-cloud-starter-feign/src/main/resources/META-INF/spring.provides rename to spring-cloud-starter-netflix/spring-cloud-starter-netflix-hystrix-dashboard/src/main/resources/META-INF/spring.provides diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-hystrix/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-hystrix/pom.xml new file mode 100644 index 00000000..3cfcb726 --- /dev/null +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-hystrix/pom.xml @@ -0,0 +1,46 @@ + + 4.0.0 + + org.springframework.cloud + spring-cloud-starter-netflix + 1.3.1.BUILD-SNAPSHOT + + spring-cloud-starter-netflix-hystrix + Spring Cloud Starter Netflix Hystrix + Spring Cloud Starter Netflix Hystrix + https://projects.spring.io/spring-cloud + + Pivotal Software, Inc. + https://www.spring.io + + + ${basedir}/../../.. + + + + org.springframework.cloud + spring-cloud-starter + + + org.springframework.cloud + spring-cloud-netflix-core + + + org.springframework.cloud + spring-cloud-starter-netflix-archaius + + + com.netflix.hystrix + hystrix-core + + + com.netflix.hystrix + hystrix-metrics-event-stream + + + com.netflix.hystrix + hystrix-javanica + + + \ No newline at end of file diff --git a/spring-cloud-starter-hystrix/src/main/resources/META-INF/spring.provides b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-hystrix/src/main/resources/META-INF/spring.provides similarity index 100% rename from spring-cloud-starter-hystrix/src/main/resources/META-INF/spring.provides rename to spring-cloud-starter-netflix/spring-cloud-starter-netflix-hystrix/src/main/resources/META-INF/spring.provides diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-ribbon/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-ribbon/pom.xml new file mode 100644 index 00000000..f257ed96 --- /dev/null +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-ribbon/pom.xml @@ -0,0 +1,54 @@ + + 4.0.0 + + org.springframework.cloud + spring-cloud-starter-netflix + 1.3.1.BUILD-SNAPSHOT + + spring-cloud-starter-netflix-ribbon + Spring Cloud Starter Netflix Ribbon + Spring Cloud Starter Netflix Ribbon + https://projects.spring.io/spring-cloud + + Pivotal Software, Inc. + https://www.spring.io + + + ${basedir}/../../.. + + + + org.springframework.cloud + spring-cloud-starter + + + org.springframework.cloud + spring-cloud-netflix-core + + + org.springframework.cloud + spring-cloud-starter-netflix-archaius + + + com.netflix.ribbon + ribbon + + + com.netflix.ribbon + ribbon-core + + + com.netflix.ribbon + ribbon-httpclient + + + com.netflix.ribbon + ribbon-loadbalancer + + + io.reactivex + rxjava + + + \ No newline at end of file diff --git a/spring-cloud-starter-ribbon/src/main/resources/META-INF/spring.provides b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-ribbon/src/main/resources/META-INF/spring.provides similarity index 100% rename from spring-cloud-starter-ribbon/src/main/resources/META-INF/spring.provides rename to spring-cloud-starter-netflix/spring-cloud-starter-netflix-ribbon/src/main/resources/META-INF/spring.provides diff --git a/spring-cloud-netflix-turbine-stream/.jdk8 b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-spectator/.jdk8 similarity index 100% rename from spring-cloud-netflix-turbine-stream/.jdk8 rename to spring-cloud-starter-netflix/spring-cloud-starter-netflix-spectator/.jdk8 diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-spectator/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-spectator/pom.xml new file mode 100644 index 00000000..8b110ed8 --- /dev/null +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-spectator/pom.xml @@ -0,0 +1,30 @@ + + 4.0.0 + + org.springframework.cloud + spring-cloud-starter-netflix + 1.3.1.BUILD-SNAPSHOT + + spring-cloud-starter-netflix-spectator + Spring Cloud Starter Netflix Spectator + Spring Cloud Starter Netflix Spectator + https://projects.spring.io/spring-cloud + + Pivotal Software, Inc. + https://www.spring.io + + + ${basedir}/../../.. + + + + org.springframework.cloud + spring-cloud-starter + + + org.springframework.cloud + spring-cloud-netflix-spectator + + + \ No newline at end of file diff --git a/spring-cloud-starter-spectator/src/main/resources/META-INF/spring.provides b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-spectator/src/main/resources/META-INF/spring.provides similarity index 100% rename from spring-cloud-starter-spectator/src/main/resources/META-INF/spring.provides rename to spring-cloud-starter-netflix/spring-cloud-starter-netflix-spectator/src/main/resources/META-INF/spring.provides diff --git a/spring-cloud-starter-spectator/.jdk8 b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-amqp/.jdk8 similarity index 100% rename from spring-cloud-starter-spectator/.jdk8 rename to spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-amqp/.jdk8 diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-amqp/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-amqp/pom.xml new file mode 100644 index 00000000..d16979e9 --- /dev/null +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-amqp/pom.xml @@ -0,0 +1,29 @@ + + 4.0.0 + + org.springframework.cloud + spring-cloud-starter-netflix + 1.3.1.BUILD-SNAPSHOT + + spring-cloud-starter-netflix-turbine-amqp + Spring Cloud Starter Netflix Turbine AMQP + Spring Cloud Starter Netflix Turbine AMQP (deprecated, please use spring-cloud-starter-netflix-turbine-stream) + https://projects.spring.io/spring-cloud + + Pivotal Software, Inc. + https://www.spring.io + + + ${basedir}/../../.. + + + + org.springframework.cloud + spring-cloud-starter-netflix-turbine-stream + + + org.springframework.cloud + spring-cloud-starter-stream-rabbit + + + \ No newline at end of file diff --git a/spring-cloud-starter-turbine-amqp/src/main/resources/META-INF/spring.provides b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-amqp/src/main/resources/META-INF/spring.provides similarity index 100% rename from spring-cloud-starter-turbine-amqp/src/main/resources/META-INF/spring.provides rename to spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-amqp/src/main/resources/META-INF/spring.provides diff --git a/spring-cloud-starter-turbine-amqp/.jdk8 b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-stream/.jdk8 similarity index 100% rename from spring-cloud-starter-turbine-amqp/.jdk8 rename to spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-stream/.jdk8 diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-stream/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-stream/pom.xml new file mode 100644 index 00000000..6bfa06bf --- /dev/null +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-stream/pom.xml @@ -0,0 +1,50 @@ + + 4.0.0 + + org.springframework.cloud + spring-cloud-starter-netflix + 1.3.1.BUILD-SNAPSHOT + + spring-cloud-starter-netflix-turbine-stream + Spring Cloud Starter Netflix Turbine Stream + Spring Cloud Starter Netflix Turbine Stream + https://projects.spring.io/spring-cloud + + Pivotal Software, Inc. + https://www.spring.io + + + ${basedir}/../../.. + + + + org.springframework.cloud + spring-cloud-starter + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + org.springframework.cloud + spring-cloud-starter-netflix-hystrix + + + org.springframework.cloud + spring-cloud-starter-netflix-ribbon + + + org.springframework.cloud + spring-cloud-starter-netflix-archaius + + + com.netflix.zuul + zuul-core + + + \ No newline at end of file diff --git a/spring-cloud-starter-turbine-stream/src/main/resources/META-INF/spring.provides b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-stream/src/main/resources/META-INF/spring.provides similarity index 100% rename from spring-cloud-starter-turbine-stream/src/main/resources/META-INF/spring.provides rename to spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-stream/src/main/resources/META-INF/spring.provides diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine/pom.xml new file mode 100644 index 00000000..2ca5137b --- /dev/null +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine/pom.xml @@ -0,0 +1,62 @@ + + 4.0.0 + + org.springframework.cloud + spring-cloud-starter-netflix + 1.3.1.BUILD-SNAPSHOT + + spring-cloud-starter-netflix-turbine + Spring Cloud Starter Netflix Turbine + Spring Cloud Starter Netflix Turbine + https://projects.spring.io/spring-cloud + + Pivotal Software, Inc. + https://www.spring.io + + + ${basedir}/../../.. + 1.0.0 + + + + org.springframework.cloud + spring-cloud-starter + + + org.springframework.cloud + spring-cloud-starter-netflix-eureka-client + + + org.springframework.cloud + spring-cloud-netflix-turbine + + + com.netflix.turbine + turbine-core + ${turbine.version} + + + javax.servlet + servlet-api + + + log4j + log4j + + + com.netflix.rxjava + rxjava-core + + + org.slf4j + slf4j-simple + + + org.mockito + mockito-all + + + + + \ No newline at end of file diff --git a/spring-cloud-starter-turbine/src/main/resources/META-INF/spring.provides b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine/src/main/resources/META-INF/spring.provides similarity index 100% rename from spring-cloud-starter-turbine/src/main/resources/META-INF/spring.provides rename to spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine/src/main/resources/META-INF/spring.provides diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-zuul/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-zuul/pom.xml new file mode 100644 index 00000000..ddf4c9ed --- /dev/null +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-zuul/pom.xml @@ -0,0 +1,50 @@ + + 4.0.0 + + org.springframework.cloud + spring-cloud-starter-netflix + 1.3.1.BUILD-SNAPSHOT + + spring-cloud-starter-netflix-zuul + Spring Cloud Starter Netflix Zuul + Spring Cloud Starter Netflix Zuul + https://projects.spring.io/spring-cloud + + Pivotal Software, Inc. + https://www.spring.io + + + ${basedir}/../../.. + + + + org.springframework.cloud + spring-cloud-starter + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + org.springframework.cloud + spring-cloud-starter-netflix-hystrix + + + org.springframework.cloud + spring-cloud-starter-netflix-ribbon + + + org.springframework.cloud + spring-cloud-starter-netflix-archaius + + + com.netflix.zuul + zuul-core + + + \ No newline at end of file diff --git a/spring-cloud-starter-zuul/src/main/resources/META-INF/spring.provides b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-zuul/src/main/resources/META-INF/spring.provides similarity index 100% rename from spring-cloud-starter-zuul/src/main/resources/META-INF/spring.provides rename to spring-cloud-starter-netflix/spring-cloud-starter-netflix-zuul/src/main/resources/META-INF/spring.provides diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-openfeign/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-openfeign/pom.xml new file mode 100644 index 00000000..d46412f3 --- /dev/null +++ b/spring-cloud-starter-netflix/spring-cloud-starter-openfeign/pom.xml @@ -0,0 +1,58 @@ + + 4.0.0 + + org.springframework.cloud + spring-cloud-starter-netflix + 1.3.1.BUILD-SNAPSHOT + + spring-cloud-starter-openfeign + Spring Cloud Starter OpenFeign + Spring Cloud Starter OpenFeign + https://projects.spring.io/spring-cloud + + Pivotal Software, Inc. + https://www.spring.io + + + ${basedir}/../../.. + + + + org.springframework.cloud + spring-cloud-starter + + + org.springframework.cloud + spring-cloud-netflix-core + + + org.springframework + spring-web + + + org.springframework.cloud + spring-cloud-commons + + + io.github.openfeign + feign-core + + + io.github.openfeign + feign-slf4j + + + io.github.openfeign + feign-hystrix + + + org.springframework.cloud + spring-cloud-starter-netflix-ribbon + + + org.springframework.cloud + spring-cloud-starter-netflix-archaius + + + \ No newline at end of file diff --git a/spring-cloud-starter-hystrix-dashboard/src/main/resources/META-INF/spring.provides b/spring-cloud-starter-netflix/spring-cloud-starter-openfeign/src/main/resources/META-INF/spring.provides similarity index 100% rename from spring-cloud-starter-hystrix-dashboard/src/main/resources/META-INF/spring.provides rename to spring-cloud-starter-netflix/spring-cloud-starter-openfeign/src/main/resources/META-INF/spring.provides diff --git a/spring-cloud-starter-ribbon/pom.xml b/spring-cloud-starter-ribbon/pom.xml index e8e057d2..8ad32929 100644 --- a/spring-cloud-starter-ribbon/pom.xml +++ b/spring-cloud-starter-ribbon/pom.xml @@ -9,8 +9,9 @@ .. spring-cloud-starter-ribbon + pom spring-cloud-starter-ribbon - Spring Cloud Starter + Spring Cloud Starter Ribbon (deprecated, please use spring-cloud-starter-netflix-ribbon) https://projects.spring.io/spring-cloud Pivotal Software, Inc. @@ -22,35 +23,7 @@ org.springframework.cloud - spring-cloud-starter - - - org.springframework.cloud - spring-cloud-netflix-core - - - org.springframework.cloud - spring-cloud-starter-archaius - - - com.netflix.ribbon - ribbon - - - com.netflix.ribbon - ribbon-core - - - com.netflix.ribbon - ribbon-httpclient - - - com.netflix.ribbon - ribbon-loadbalancer - - - io.reactivex - rxjava + spring-cloud-starter-netflix-ribbon diff --git a/spring-cloud-starter-spectator/pom.xml b/spring-cloud-starter-spectator/pom.xml index 7a762f2d..11c5876e 100644 --- a/spring-cloud-starter-spectator/pom.xml +++ b/spring-cloud-starter-spectator/pom.xml @@ -9,8 +9,9 @@ .. spring-cloud-starter-spectator + pom spring-cloud-starter-spectator - Spring Cloud Starter Spectator + Spring Cloud Starter Spectator (deprecated, please use spring-cloud-starter-netflix-spectator) https://projects.spring.io/spring-cloud Pivotal Software, Inc. @@ -22,11 +23,7 @@ org.springframework.cloud - spring-cloud-starter - - - org.springframework.cloud - spring-cloud-netflix-spectator + spring-cloud-starter-netflix-spectator diff --git a/spring-cloud-starter-turbine-amqp/pom.xml b/spring-cloud-starter-turbine-amqp/pom.xml index c7416444..d30a9a6f 100644 --- a/spring-cloud-starter-turbine-amqp/pom.xml +++ b/spring-cloud-starter-turbine-amqp/pom.xml @@ -9,8 +9,9 @@ .. spring-cloud-starter-turbine-amqp + pom spring-cloud-starter-turbine-amqp - Spring Cloud Starter Turbine AMQP (deprecated, please use spring-cloud-starter-turbine-stream) + Spring Cloud Starter Turbine AMQP (deprecated, please use spring-cloud-starter-netflix-turbine-stream) https://projects.spring.io/spring-cloud Pivotal Software, Inc. @@ -22,11 +23,7 @@ org.springframework.cloud - spring-cloud-starter-turbine-stream - - - org.springframework.cloud - spring-cloud-starter-stream-rabbit + spring-cloud-starter-netflix-turbine-amqp diff --git a/spring-cloud-starter-turbine-stream/.jdk8 b/spring-cloud-starter-turbine-stream/.jdk8 deleted file mode 100644 index e69de29b..00000000 diff --git a/spring-cloud-starter-turbine-stream/pom.xml b/spring-cloud-starter-turbine-stream/pom.xml index 45a6a143..6a119de5 100644 --- a/spring-cloud-starter-turbine-stream/pom.xml +++ b/spring-cloud-starter-turbine-stream/pom.xml @@ -9,8 +9,9 @@ .. spring-cloud-starter-turbine-stream + pom spring-cloud-starter-turbine-stream - Spring Cloud Starter Turbine Stream + Spring Cloud Starter Turbine Stream (deprecated, please use spring-cloud-starter-netflix-turbine-stream) https://projects.spring.io/spring-cloud Pivotal Software, Inc. @@ -23,56 +24,7 @@ org.springframework.cloud - spring-cloud-starter-eureka - - - spring-boot-starter-tomcat - org.springframework.boot - - - - - org.springframework.cloud - spring-cloud-commons - - - org.springframework.cloud - spring-cloud-starter-archaius - - - org.springframework.cloud - spring-cloud-netflix-turbine-stream - - - org.springframework.cloud - spring-cloud-stream - - - com.fasterxml.jackson.core - jackson-databind - - - com.netflix.turbine - turbine-core - ${turbine.version} - - - com.netflix.rxjava - rxjava-core - - - org.slf4j - slf4j-simple - - - - - io.reactivex - rxjava - - - org.apache.tomcat.embed - tomcat-embed-el + spring-cloud-starter-netflix-turbine-stream diff --git a/spring-cloud-starter-turbine/pom.xml b/spring-cloud-starter-turbine/pom.xml index 1cb3c1e7..776e37dc 100644 --- a/spring-cloud-starter-turbine/pom.xml +++ b/spring-cloud-starter-turbine/pom.xml @@ -9,8 +9,9 @@ .. spring-cloud-starter-turbine + pom spring-cloud-starter-turbine - Spring Cloud Starter Turbine + Spring Cloud Starter Turbine (deprecated, please use spring-cloud-starter-netflix-turbine) https://projects.spring.io/spring-cloud Pivotal Software, Inc. @@ -23,42 +24,7 @@ org.springframework.cloud - spring-cloud-starter - - - org.springframework.cloud - spring-cloud-starter-eureka - - - org.springframework.cloud - spring-cloud-netflix-turbine - - - com.netflix.turbine - turbine-core - ${turbine.version} - - - javax.servlet - servlet-api - - - log4j - log4j - - - com.netflix.rxjava - rxjava-core - - - org.slf4j - slf4j-simple - - - org.mockito - mockito-all - - + spring-cloud-starter-netflix-turbine diff --git a/spring-cloud-starter-zuul/pom.xml b/spring-cloud-starter-zuul/pom.xml index b0c2b056..4b8307b6 100644 --- a/spring-cloud-starter-zuul/pom.xml +++ b/spring-cloud-starter-zuul/pom.xml @@ -9,8 +9,9 @@ .. spring-cloud-starter-zuul + pom spring-cloud-starter-zuul - Spring Cloud Starter + Spring Cloud Starter Zuul (deprecated, please use spring-cloud-starter-netflix-zuul) https://projects.spring.io/spring-cloud Pivotal Software, Inc. @@ -22,31 +23,7 @@ org.springframework.cloud - spring-cloud-starter - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-actuator - - - org.springframework.cloud - spring-cloud-starter-hystrix - - - org.springframework.cloud - spring-cloud-starter-ribbon - - - org.springframework.cloud - spring-cloud-starter-archaius - - - com.netflix.zuul - zuul-core + spring-cloud-starter-netflix-zuul From 112a3e27a6593abd536dcd5d73fdb382af1858f0 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Fri, 21 Jul 2017 14:21:44 -0600 Subject: [PATCH 5/5] Fix versions of new starters --- pom.xml | 2 +- spring-cloud-netflix-dependencies/pom.xml | 2 +- spring-cloud-starter-netflix/pom.xml | 2 +- .../spring-cloud-starter-netflix-archaius/pom.xml | 2 +- .../spring-cloud-starter-netflix-atlas/pom.xml | 2 +- .../spring-cloud-starter-netflix-eureka-client/pom.xml | 2 +- .../spring-cloud-starter-netflix-eureka-server/pom.xml | 2 +- .../spring-cloud-starter-netflix-hystrix-dashboard/pom.xml | 2 +- .../spring-cloud-starter-netflix-hystrix/pom.xml | 2 +- .../spring-cloud-starter-netflix-ribbon/pom.xml | 2 +- .../spring-cloud-starter-netflix-spectator/pom.xml | 2 +- .../spring-cloud-starter-netflix-turbine-amqp/pom.xml | 2 +- .../spring-cloud-starter-netflix-turbine-stream/pom.xml | 2 +- .../spring-cloud-starter-netflix-turbine/pom.xml | 2 +- .../spring-cloud-starter-netflix-zuul/pom.xml | 2 +- .../spring-cloud-starter-openfeign/pom.xml | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/pom.xml b/pom.xml index d287f39c..d0bf77cc 100644 --- a/pom.xml +++ b/pom.xml @@ -134,6 +134,7 @@ spring-cloud-netflix-turbine spring-cloud-netflix-turbine-stream spring-cloud-netflix-sidecar + spring-cloud-starter-netflix spring-cloud-starter-archaius spring-cloud-starter-atlas spring-cloud-starter-eureka @@ -141,7 +142,6 @@ spring-cloud-starter-feign spring-cloud-starter-hystrix spring-cloud-starter-hystrix-dashboard - spring-cloud-starter-netflix spring-cloud-starter-ribbon spring-cloud-starter-spectator spring-cloud-starter-turbine diff --git a/spring-cloud-netflix-dependencies/pom.xml b/spring-cloud-netflix-dependencies/pom.xml index 3dcabe24..939fc215 100644 --- a/spring-cloud-netflix-dependencies/pom.xml +++ b/spring-cloud-netflix-dependencies/pom.xml @@ -5,7 +5,7 @@ spring-cloud-dependencies-parent org.springframework.cloud - 1.3.1.BUILD-SNAPSHOT + 1.3.3.BUILD-SNAPSHOT spring-cloud-netflix-dependencies diff --git a/spring-cloud-starter-netflix/pom.xml b/spring-cloud-starter-netflix/pom.xml index 0e8c0b81..22243092 100644 --- a/spring-cloud-starter-netflix/pom.xml +++ b/spring-cloud-starter-netflix/pom.xml @@ -4,7 +4,7 @@ org.springframework.cloud spring-cloud-netflix - 1.3.1.BUILD-SNAPSHOT + 1.4.0.BUILD-SNAPSHOT .. spring-cloud-starter-netflix diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-archaius/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-archaius/pom.xml index d78fdba8..f8c9e399 100644 --- a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-archaius/pom.xml +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-archaius/pom.xml @@ -4,7 +4,7 @@ org.springframework.cloud spring-cloud-starter-netflix - 1.3.1.BUILD-SNAPSHOT + 1.4.0.BUILD-SNAPSHOT spring-cloud-starter-netflix-archaius Spring Cloud Starter Netflix Archaius diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-atlas/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-atlas/pom.xml index bca60d6f..4e8b8b9c 100644 --- a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-atlas/pom.xml +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-atlas/pom.xml @@ -4,7 +4,7 @@ org.springframework.cloud spring-cloud-starter-netflix - 1.3.1.BUILD-SNAPSHOT + 1.4.0.BUILD-SNAPSHOT spring-cloud-starter-netflix-atlas Spring Cloud Starter Netflix Atlas diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-eureka-client/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-eureka-client/pom.xml index e1960871..7e2a15b7 100644 --- a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-eureka-client/pom.xml +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-eureka-client/pom.xml @@ -4,7 +4,7 @@ org.springframework.cloud spring-cloud-starter-netflix - 1.3.1.BUILD-SNAPSHOT + 1.4.0.BUILD-SNAPSHOT spring-cloud-starter-netflix-eureka-client Spring Cloud Starter Netflix Eureka Client diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-eureka-server/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-eureka-server/pom.xml index b4d47a80..9cec711c 100644 --- a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-eureka-server/pom.xml +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-eureka-server/pom.xml @@ -3,7 +3,7 @@ org.springframework.cloud spring-cloud-starter-netflix - 1.3.1.BUILD-SNAPSHOT + 1.4.0.BUILD-SNAPSHOT spring-cloud-starter-netflix-eureka-server Spring Cloud Starter Netflix Eureka Server diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-hystrix-dashboard/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-hystrix-dashboard/pom.xml index 11baa6ac..658584aa 100644 --- a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-hystrix-dashboard/pom.xml +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-hystrix-dashboard/pom.xml @@ -4,7 +4,7 @@ org.springframework.cloud spring-cloud-starter-netflix - 1.3.1.BUILD-SNAPSHOT + 1.4.0.BUILD-SNAPSHOT spring-cloud-starter-netflix-hystrix-dashboard Spring Cloud Starter Netflix Hystrix Dashboard diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-hystrix/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-hystrix/pom.xml index 3cfcb726..de2e7bd6 100644 --- a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-hystrix/pom.xml +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-hystrix/pom.xml @@ -4,7 +4,7 @@ org.springframework.cloud spring-cloud-starter-netflix - 1.3.1.BUILD-SNAPSHOT + 1.4.0.BUILD-SNAPSHOT spring-cloud-starter-netflix-hystrix Spring Cloud Starter Netflix Hystrix diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-ribbon/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-ribbon/pom.xml index f257ed96..73949fbc 100644 --- a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-ribbon/pom.xml +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-ribbon/pom.xml @@ -4,7 +4,7 @@ org.springframework.cloud spring-cloud-starter-netflix - 1.3.1.BUILD-SNAPSHOT + 1.4.0.BUILD-SNAPSHOT spring-cloud-starter-netflix-ribbon Spring Cloud Starter Netflix Ribbon diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-spectator/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-spectator/pom.xml index 8b110ed8..d7218ea0 100644 --- a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-spectator/pom.xml +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-spectator/pom.xml @@ -4,7 +4,7 @@ org.springframework.cloud spring-cloud-starter-netflix - 1.3.1.BUILD-SNAPSHOT + 1.4.0.BUILD-SNAPSHOT spring-cloud-starter-netflix-spectator Spring Cloud Starter Netflix Spectator diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-amqp/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-amqp/pom.xml index d16979e9..a1e5156e 100644 --- a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-amqp/pom.xml +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-amqp/pom.xml @@ -3,7 +3,7 @@ org.springframework.cloud spring-cloud-starter-netflix - 1.3.1.BUILD-SNAPSHOT + 1.4.0.BUILD-SNAPSHOT spring-cloud-starter-netflix-turbine-amqp Spring Cloud Starter Netflix Turbine AMQP diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-stream/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-stream/pom.xml index 6bfa06bf..7d60c688 100644 --- a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-stream/pom.xml +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine-stream/pom.xml @@ -4,7 +4,7 @@ org.springframework.cloud spring-cloud-starter-netflix - 1.3.1.BUILD-SNAPSHOT + 1.4.0.BUILD-SNAPSHOT spring-cloud-starter-netflix-turbine-stream Spring Cloud Starter Netflix Turbine Stream diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine/pom.xml index 2ca5137b..0b930c89 100644 --- a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine/pom.xml +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-turbine/pom.xml @@ -4,7 +4,7 @@ org.springframework.cloud spring-cloud-starter-netflix - 1.3.1.BUILD-SNAPSHOT + 1.4.0.BUILD-SNAPSHOT spring-cloud-starter-netflix-turbine Spring Cloud Starter Netflix Turbine diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-zuul/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-zuul/pom.xml index ddf4c9ed..b894180f 100644 --- a/spring-cloud-starter-netflix/spring-cloud-starter-netflix-zuul/pom.xml +++ b/spring-cloud-starter-netflix/spring-cloud-starter-netflix-zuul/pom.xml @@ -4,7 +4,7 @@ org.springframework.cloud spring-cloud-starter-netflix - 1.3.1.BUILD-SNAPSHOT + 1.4.0.BUILD-SNAPSHOT spring-cloud-starter-netflix-zuul Spring Cloud Starter Netflix Zuul diff --git a/spring-cloud-starter-netflix/spring-cloud-starter-openfeign/pom.xml b/spring-cloud-starter-netflix/spring-cloud-starter-openfeign/pom.xml index d46412f3..e15ef009 100644 --- a/spring-cloud-starter-netflix/spring-cloud-starter-openfeign/pom.xml +++ b/spring-cloud-starter-netflix/spring-cloud-starter-openfeign/pom.xml @@ -4,7 +4,7 @@ org.springframework.cloud spring-cloud-starter-netflix - 1.3.1.BUILD-SNAPSHOT + 1.4.0.BUILD-SNAPSHOT spring-cloud-starter-openfeign Spring Cloud Starter OpenFeign