diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
index 6637cedb..56bb0164 100644
--- a/.mvn/wrapper/maven-wrapper.properties
+++ b/.mvn/wrapper/maven-wrapper.properties
@@ -1 +1 @@
-distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.3.9/apache-maven-3.3.9-bin.zip
\ No newline at end of file
+distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.0/apache-maven-3.5.0-bin.zip
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 84b772b1..00000000
--- a/.travis.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-sudo: false
-cache:
- directories:
- - $HOME/.m2
-language: java
-jdk:
- - oraclejdk8
-services:
- - rabbitmq
-before_install:
- - git config user.name "$GIT_NAME"
- - git config user.email "$GIT_EMAIL"
- - git config credential.helper "store --file=.git/credentials"
- - echo "https://$GH_TOKEN:@github.com" > .git/credentials
- - gem install asciidoctor
-install:
-- ./mvnw install -P docs -q -U -DskipTests=true $MVN_LOCAL_OPTS
-- '[ "${MVN_GOAL}" == "deploy" ] && ./docs/src/main/asciidoc/ghpages.sh || echo "Not updating docs"'
-script:
-- './mvnw -s .settings.xml $MVN_GOAL $MVN_PROFILE -nsu $MVN_LOCAL_OPTS'
-env:
- global:
- - MVN_LOCAL_OPTS="-Dmaven.source.skip=true -Dmaven.javadoc.skip=true -Dmaven.test.redirectTestOutputToFile=true"
- - GIT_NAME="Dave Syer"
- - GIT_EMAIL=dsyer@pivotal.io
- - CI_DEPLOY_USERNAME=buildmaster
- - FEATURE_BRANCH=$(echo ${TRAVIS_BRANCH} | grep -q "^.*/.*$" && echo true || echo false)
- - SPRING_CLOUD_BUILD=$(echo ${TRAVIS_REPO_SLUG} | grep -q "^spring-cloud/.*$" && echo true || echo false)
- - MVN_GOAL=install
- - VERSION=$(mvn validate | grep Building | head -1 | sed -e 's/.* //')
- - MILESTONE=$(echo ${VERSION} | egrep 'M|RC' && echo true || echo false)
- - MVN_PROFILE=$([ "${MILESTONE}" == "true" ] && echo -P milestone)
- - JAVA_OPTS="-Xmx1024m -XX:CICompilerCount=1 -XX:TieredStopAtLevel=1 -Djava.security.egd=file:/dev/./urandom"
- - secure: aeLXRC5oFSddwnZt1/7G2/OHr7jDbxz0ET7sej3I+eSbe3N5vbzQ6FC08es4l89l54ciXd90I1g2BMw7DTYKOO373FP78XPdAEbifJTU4DGd6fCELmoTtUPhjunBIk7E49hisPbv82892IYYA7qi/hzG548cPyZ1IgiJjq0NCsc=
diff --git a/docs/pom.xml b/docs/pom.xml
index b86c8b10..68ff2796 100644
--- a/docs/pom.xml
+++ b/docs/pom.xml
@@ -5,7 +5,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
spring-cloud-netflix-docs
pom
@@ -14,7 +14,7 @@
spring-cloud-netflix
${basedir}/..
- 1.0.x,1.1.x,1.2.x
+ 1.0.x,1.1.x
diff --git a/mvnw b/mvnw
index 0a7dac22..a69491ac 100755
--- a/mvnw
+++ b/mvnw
@@ -238,8 +238,16 @@ else
echo $MAVEN_ARGS | grep -q milestone && MAVEN_ARGS=$(echo $MAVEN_ARGS | sed -e 's/-Pmilestone//')
fi
+if echo $VERSION | egrep -q 'RELEASE'; then
+ echo Activating \"central\" profile for version=\"$VERSION\"
+ echo $MAVEN_ARGS | grep -q milestone || MAVEN_ARGS="$MAVEN_ARGS -Pcentral"
+else
+ echo Deactivating \"central\" profile for version=\"$VERSION\"
+ echo $MAVEN_ARGS | grep -q central && MAVEN_ARGS=$(echo $MAVEN_ARGS | sed -e 's/-Pcentral//')
+fi
+
exec "$JAVACMD" \
$MAVEN_OPTS \
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
"-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
- ${WRAPPER_LAUNCHER} ${MAVEN_ARGS} "$@"
+ ${WRAPPER_LAUNCHER} ${MAVEN_ARGS} "$@"
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 0cf338b5..b991763d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,14 +3,14 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
pom
Spring Cloud Netflix
Spring Cloud Netflix
org.springframework.cloud
spring-cloud-build
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.2.RELEASE
@@ -24,8 +24,8 @@
${basedir}
4.0.27.Final
2.7.3
- 2.0.0.BUILD-SNAPSHOT
- 2.0.0.BUILD-SNAPSHOT
+ 1.2.1.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
Chelsea.BUILD-SNAPSHOT
@@ -57,8 +57,8 @@
maven-compiler-plugin
- 1.8
- 1.8
+ 1.7
+ 1.7
diff --git a/spring-cloud-netflix-core/pom.xml b/spring-cloud-netflix-core/pom.xml
index 49cb7e0e..9942ef8c 100644
--- a/spring-cloud-netflix-core/pom.xml
+++ b/spring-cloud-netflix-core/pom.xml
@@ -5,7 +5,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
..
spring-cloud-netflix-core
diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/encoding/FeignAcceptGzipEncodingAutoConfiguration.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/encoding/FeignAcceptGzipEncodingAutoConfiguration.java
index 3144343d..06eaf0be 100644
--- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/encoding/FeignAcceptGzipEncodingAutoConfiguration.java
+++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/encoding/FeignAcceptGzipEncodingAutoConfiguration.java
@@ -18,7 +18,8 @@ package org.springframework.cloud.netflix.feign.encoding;
import feign.Feign;
import feign.httpclient.ApacheHttpClient;
-import org.springframework.boot.autoconfigure.AutoConfigureBefore;
+
+import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -38,7 +39,7 @@ import org.springframework.context.annotation.Configuration;
@ConditionalOnClass(Feign.class)
@ConditionalOnBean(ApacheHttpClient.class)
@ConditionalOnProperty(value = "feign.compression.response.enabled", matchIfMissing = false)
-@AutoConfigureBefore(FeignAutoConfiguration.class)
+@AutoConfigureAfter(FeignAutoConfiguration.class)
public class FeignAcceptGzipEncodingAutoConfiguration {
@Bean
diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/encoding/FeignContentGzipEncodingAutoConfiguration.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/encoding/FeignContentGzipEncodingAutoConfiguration.java
index a9dd22b7..e339ff11 100644
--- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/encoding/FeignContentGzipEncodingAutoConfiguration.java
+++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/encoding/FeignContentGzipEncodingAutoConfiguration.java
@@ -18,7 +18,8 @@ package org.springframework.cloud.netflix.feign.encoding;
import feign.Feign;
import feign.httpclient.ApacheHttpClient;
-import org.springframework.boot.autoconfigure.AutoConfigureBefore;
+
+import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -38,7 +39,7 @@ import org.springframework.context.annotation.Configuration;
@ConditionalOnClass(Feign.class)
@ConditionalOnBean(ApacheHttpClient.class)
@ConditionalOnProperty(value = "feign.compression.request.enabled", matchIfMissing = false)
-@AutoConfigureBefore(FeignAutoConfiguration.class)
+@AutoConfigureAfter(FeignAutoConfiguration.class)
public class FeignContentGzipEncodingAutoConfiguration {
@Bean
diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/ribbon/FeignLoadBalancer.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/ribbon/FeignLoadBalancer.java
index 5b5ca69f..57bdc881 100644
--- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/ribbon/FeignLoadBalancer.java
+++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/ribbon/FeignLoadBalancer.java
@@ -19,7 +19,6 @@ package org.springframework.cloud.netflix.feign.ribbon;
import feign.Client;
import feign.Request;
import feign.Response;
-import feign.Util;
import java.io.IOException;
import java.net.URI;
diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/apache/RibbonLoadBalancingHttpClient.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/apache/RibbonLoadBalancingHttpClient.java
index 73ad0e8e..18db9b68 100644
--- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/apache/RibbonLoadBalancingHttpClient.java
+++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/apache/RibbonLoadBalancingHttpClient.java
@@ -103,6 +103,7 @@ public class RibbonLoadBalancingHttpClient extends
@Override
public RequestSpecificRetryHandler getRequestSpecificRetryHandler(RibbonApacheHttpRequest request, IClientConfig requestConfig) {
- return new RequestSpecificRetryHandler(false, false, RetryHandler.DEFAULT, null);
+ return new RequestSpecificRetryHandler(false, false,
+ RetryHandler.DEFAULT, requestConfig);
}
}
diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ZuulFilterInitializer.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ZuulFilterInitializer.java
index a15f0d1f..19ae0de0 100644
--- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ZuulFilterInitializer.java
+++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ZuulFilterInitializer.java
@@ -33,9 +33,10 @@ import com.netflix.zuul.monitoring.TracerFactory;
import lombok.extern.apachecommons.CommonsLog;
/**
+ * Initializes various Zuul components including {@link ZuulFilter}.
+ *
* @author Spencer Gibb
*
- * TODO: .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
*/
@CommonsLog
public class ZuulFilterInitializer implements ServletContextListener {
@@ -91,17 +92,4 @@ public class ZuulFilterInitializer implements ServletContextListener {
cache.clear();
}
- /*
- * private void initGroovyFilterManager() {
- *
- * //TODO: support groovy filters loaded from filesystem in proxy
- * FilterLoader.getInstance().setCompiler(new GroovyCompiler());
- *
- * final String scriptRoot = props.getFilterRoot();
- * log.info("Using file system script: " + scriptRoot);
- *
- * try { FilterFileManager.setFilenameFilter(new GroovyFileFilter());
- * FilterFileManager.init(5, scriptRoot + "/pre", scriptRoot + "/route", scriptRoot +
- * "/post" ); } catch (Exception e) { throw new RuntimeException(e); } }
- */
}
diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/pre/PreDecorationFilter.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/pre/PreDecorationFilter.java
index ca7cc260..84653571 100644
--- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/pre/PreDecorationFilter.java
+++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/pre/PreDecorationFilter.java
@@ -198,21 +198,21 @@ public class PreDecorationFilter extends ZuulFilter {
String proto = request.getScheme();
if (hasHeader(request, X_FORWARDED_HOST_HEADER)) {
host = request.getHeader(X_FORWARDED_HOST_HEADER) + "," + host;
- if (!hasHeader(request, X_FORWARDED_PORT_HEADER)) {
- if (hasHeader(request, X_FORWARDED_PROTO_HEADER)) {
- StringBuilder builder = new StringBuilder();
- for (String previous : StringUtils.commaDelimitedListToStringArray(request.getHeader(X_FORWARDED_PROTO_HEADER))) {
- if (builder.length()>0) {
- builder.append(",");
- }
- builder.append(HTTPS_SCHEME.equals(previous) ? HTTPS_PORT : HTTP_PORT);
+ }
+ if (!hasHeader(request, X_FORWARDED_PORT_HEADER)) {
+ if (hasHeader(request, X_FORWARDED_PROTO_HEADER)) {
+ StringBuilder builder = new StringBuilder();
+ for (String previous : StringUtils.commaDelimitedListToStringArray(request.getHeader(X_FORWARDED_PROTO_HEADER))) {
+ if (builder.length()>0) {
+ builder.append(",");
}
- builder.append(",").append(port);
- port = builder.toString();
+ builder.append(HTTPS_SCHEME.equals(previous) ? HTTPS_PORT : HTTP_PORT);
}
- } else {
- port = request.getHeader(X_FORWARDED_PORT_HEADER) + "," + port;
+ builder.append(",").append(port);
+ port = builder.toString();
}
+ } else {
+ port = request.getHeader(X_FORWARDED_PORT_HEADER) + "," + port;
}
if (hasHeader(request, X_FORWARDED_PROTO_HEADER)) {
proto = request.getHeader(X_FORWARDED_PROTO_HEADER) + "," + proto;
diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/route/RibbonRoutingFilter.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/route/RibbonRoutingFilter.java
index 66d17dcc..f28d82c5 100644
--- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/route/RibbonRoutingFilter.java
+++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/route/RibbonRoutingFilter.java
@@ -70,7 +70,7 @@ public class RibbonRoutingFilter extends ZuulFilter {
this.requestCustomizers = requestCustomizers;
// To support Servlet API 3.0.1 we need to check if getcontentLengthLong exists
try {
- HttpServletResponse.class.getMethod("getContentLengthLong");
+ HttpServletRequest.class.getMethod("getContentLengthLong");
} catch(NoSuchMethodException e) {
useServlet31 = false;
}
diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/feign/FeignCompressionTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/feign/FeignCompressionTests.java
new file mode 100644
index 00000000..17ba30d1
--- /dev/null
+++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/feign/FeignCompressionTests.java
@@ -0,0 +1,97 @@
+/*
+ *
+ * * Copyright 2013-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.feign;
+
+import feign.Client;
+import feign.RequestInterceptor;
+import feign.httpclient.ApacheHttpClient;
+
+import java.util.Map;
+import org.junit.After;
+import org.junit.Before;
+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.builder.SpringApplicationBuilder;
+import org.springframework.cloud.ClassPathExclusions;
+import org.springframework.cloud.FilteredClassPathRunner;
+import org.springframework.cloud.netflix.archaius.ArchaiusAutoConfiguration;
+import org.springframework.cloud.netflix.feign.encoding.FeignAcceptGzipEncodingAutoConfiguration;
+import org.springframework.cloud.netflix.feign.encoding.FeignAcceptGzipEncodingInterceptor;
+import org.springframework.cloud.netflix.feign.encoding.FeignContentGzipEncodingAutoConfiguration;
+import org.springframework.cloud.netflix.feign.encoding.FeignContentGzipEncodingInterceptor;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @author Ryan Baxter
+ */
+@RunWith(FilteredClassPathRunner.class)
+@ClassPathExclusions({"ribbon-loadbalancer-{version:\\d.*}.jar"})
+public class FeignCompressionTests {
+
+ private ConfigurableApplicationContext context;
+
+ @Before
+ public void setUp() {
+ context = new SpringApplicationBuilder().properties("feign.compression.response.enabled=true",
+ "feign.compression.request.enabled=true", "feign.okhttp.enabled=false").sources(PropertyPlaceholderAutoConfiguration.class,
+ ArchaiusAutoConfiguration.class, FeignAutoConfiguration.class, PlainConfig.class, FeignContentGzipEncodingAutoConfiguration.class,
+ FeignAcceptGzipEncodingAutoConfiguration.class).web(false).run();
+ }
+
+ @After
+ public void tearDown() {
+ if(context != null) {
+ context.close();
+ }
+ }
+
+ @Test
+ public void testInterceptors() {
+ FeignContext feignContext = context.getBean(FeignContext.class);
+ Map interceptors = feignContext.getInstances("foo", RequestInterceptor.class);
+ assertEquals(2, interceptors.size());
+ assertTrue(FeignAcceptGzipEncodingInterceptor.class.isInstance(interceptors.get("feignAcceptGzipEncodingInterceptor")));
+ assertTrue(FeignContentGzipEncodingInterceptor.class.isInstance(interceptors.get("feignContentGzipEncodingInterceptor")));
+ }
+
+ @Configuration
+ protected static class PlainConfig {
+
+ @Autowired
+ private Client client;
+
+ @Bean
+ public ApacheHttpClient client() {
+ /* We know our client is an AppacheHttpClient because we disabled the OK HTTP client. FeignAcceptGzipEncodingAutoConfiguration
+ * won't load unless there is a bean of type ApacheHttpClient (not Client) in this test because the bean is not
+ * yet created and so the application context doesnt know that the Client bean is actually an instance of ApacheHttpClient,
+ * therefore FeignAcceptGzipEncodingAutoConfiguration will not be loaded. We just create a bean here of type
+ * ApacheHttpClient so that the configuration will be loaded correctly.
+ */
+ return (ApacheHttpClient)client;
+ }
+ }
+}
diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/pre/PreDecorationFilterTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/pre/PreDecorationFilterTests.java
index 5b7f25af..9fe24f71 100644
--- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/pre/PreDecorationFilterTests.java
+++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/pre/PreDecorationFilterTests.java
@@ -152,7 +152,56 @@ public class PreDecorationFilterTests {
this.filter.run();
RequestContext ctx = RequestContext.getCurrentContext();
assertEquals("localhost:8080", ctx.getZuulRequestHeaders().get("x-forwarded-host"));
- assertEquals("8080", ctx.getZuulRequestHeaders().get("x-forwarded-port"));
+ assertEquals("443,8080", ctx.getZuulRequestHeaders().get("x-forwarded-port"));
+ assertEquals("https,http", ctx.getZuulRequestHeaders().get("x-forwarded-proto"));
+ }
+
+ @Test
+ public void xForwardedProtoHttpOnlyAppends() throws Exception {
+ this.properties.setPrefix("/api");
+ this.request.setRequestURI("/api/foo/1");
+ this.request.setRemoteAddr("5.6.7.8");
+ this.request.setServerPort(8080);
+ this.request.addHeader("X-Forwarded-Proto", "http");
+ this.routeLocator.addRoute(
+ new ZuulRoute("foo", "/foo/**", "foo", null, false, null, null));
+ this.filter.run();
+ RequestContext ctx = RequestContext.getCurrentContext();
+ assertEquals("localhost:8080", ctx.getZuulRequestHeaders().get("x-forwarded-host"));
+ assertEquals("80,8080", ctx.getZuulRequestHeaders().get("x-forwarded-port"));
+ assertEquals("http,http", ctx.getZuulRequestHeaders().get("x-forwarded-proto"));
+ }
+
+ @Test
+ public void xForwardedPortOnlyAppends() throws Exception {
+ this.properties.setPrefix("/api");
+ this.request.setRequestURI("/api/foo/1");
+ this.request.setRemoteAddr("5.6.7.8");
+ this.request.setServerPort(8080);
+ this.request.addHeader("X-Forwarded-Port", "456");
+ this.routeLocator.addRoute(
+ new ZuulRoute("foo", "/foo/**", "foo", null, false, null, null));
+ this.filter.run();
+ RequestContext ctx = RequestContext.getCurrentContext();
+ assertEquals("localhost:8080", ctx.getZuulRequestHeaders().get("x-forwarded-host"));
+ assertEquals("456,8080", ctx.getZuulRequestHeaders().get("x-forwarded-port"));
+ assertEquals("http", ctx.getZuulRequestHeaders().get("x-forwarded-proto"));
+ }
+
+ @Test
+ public void xForwardedPortAndProtoAppends() throws Exception {
+ this.properties.setPrefix("/api");
+ this.request.setRequestURI("/api/foo/1");
+ this.request.setRemoteAddr("5.6.7.8");
+ this.request.setServerPort(8080);
+ this.request.addHeader("X-Forwarded-Proto", "https");
+ this.request.addHeader("X-Forwarded-Port", "456");
+ this.routeLocator.addRoute(
+ new ZuulRoute("foo", "/foo/**", "foo", null, false, null, null));
+ this.filter.run();
+ RequestContext ctx = RequestContext.getCurrentContext();
+ assertEquals("localhost:8080", ctx.getZuulRequestHeaders().get("x-forwarded-host"));
+ assertEquals("456,8080", ctx.getZuulRequestHeaders().get("x-forwarded-port"));
assertEquals("https,http", ctx.getZuulRequestHeaders().get("x-forwarded-proto"));
}
diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/route/support/RibbonRetryIntegrationTestBase.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/route/support/RibbonRetryIntegrationTestBase.java
index fb569716..c43b6307 100644
--- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/route/support/RibbonRetryIntegrationTestBase.java
+++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/route/support/RibbonRetryIntegrationTestBase.java
@@ -119,7 +119,7 @@ public abstract class RibbonRetryIntegrationTestBase {
}
@Test
- public void disbaleRetry() {
+ public void disableRetry() {
String uri = "/disableretry/everyothererror";
ResponseEntity result = new TestRestTemplate().exchange(
"http://localhost:" + this.port + uri, HttpMethod.GET,
diff --git a/spring-cloud-netflix-dependencies/pom.xml b/spring-cloud-netflix-dependencies/pom.xml
index 09c6d3b9..a995dae1 100644
--- a/spring-cloud-netflix-dependencies/pom.xml
+++ b/spring-cloud-netflix-dependencies/pom.xml
@@ -5,11 +5,11 @@
spring-cloud-dependencies-parent
org.springframework.cloud
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
spring-cloud-netflix-dependencies
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
pom
spring-cloud-netflix-dependencies
Spring Cloud Netflix Dependencies
@@ -17,7 +17,7 @@
0.7.4
1.6.2
9.4.0
- 1.5.10
+ 1.5.11
2.2.2
0.10.1
1.3.0
diff --git a/spring-cloud-netflix-eureka-client/pom.xml b/spring-cloud-netflix-eureka-client/pom.xml
index 0d1c982e..64b5040a 100644
--- a/spring-cloud-netflix-eureka-client/pom.xml
+++ b/spring-cloud-netflix-eureka-client/pom.xml
@@ -5,7 +5,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
..
spring-cloud-netflix-eureka-client
diff --git a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/EurekaDiscoveryClientConfiguration.java b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/EurekaDiscoveryClientConfiguration.java
index 37c938ab..8f068518 100644
--- a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/EurekaDiscoveryClientConfiguration.java
+++ b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/EurekaDiscoveryClientConfiguration.java
@@ -61,11 +61,19 @@ public class EurekaDiscoveryClientConfiguration {
@ConditionalOnClass(RefreshScopeRefreshedEvent.class)
protected static class EurekaClientConfigurationRefresher {
+ @Autowired(required = false)
+ private EurekaClient eurekaClient;
+
@Autowired(required = false)
private EurekaAutoServiceRegistration autoRegistration;
@EventListener(RefreshScopeRefreshedEvent.class)
public void onApplicationEvent(RefreshScopeRefreshedEvent event) {
+ //This will force the creation of the EurkaClient bean if not already created
+ //to make sure the client will be reregistered after a refresh event
+ if(eurekaClient != null) {
+ eurekaClient.getApplications();
+ }
if (autoRegistration != null) {
// register in case meta data changed
this.autoRegistration.stop();
diff --git a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/ribbon/eureka/RibbonEurekaAutoConfiguration.java b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/ribbon/eureka/RibbonEurekaAutoConfiguration.java
index 7ba3e0be..e29a452c 100644
--- a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/ribbon/eureka/RibbonEurekaAutoConfiguration.java
+++ b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/ribbon/eureka/RibbonEurekaAutoConfiguration.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013-2014 the original author or authors.
+ * Copyright 2013-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.
@@ -38,7 +38,11 @@ import com.netflix.discovery.EurekaClient;
import com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList;
/**
+ * Spring configuration for configuring Ribbon defaults to be Eureka based
+ * if Eureka client is enabled
+ *
* @author Dave Syer
+ * @author Biju Kunjummen
*/
@Configuration
@EnableConfigurationProperties
@@ -65,8 +69,11 @@ public class RibbonEurekaAutoConfiguration {
@ConditionalOnBean(SpringClientFactory.class)
@ConditionalOnProperty(value = "ribbon.eureka.enabled", matchIfMissing = true)
static class Defaults {}
-
+
@ConditionalOnBean(EurekaClient.class)
static class EurekaBeans {}
+
+ @ConditionalOnProperty(value = "eureka.client.enabled", matchIfMissing = true)
+ static class OnEurekaClientEnabled {}
}
}
diff --git a/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/config/ConfigRefreshTests.java b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/config/ConfigRefreshTests.java
new file mode 100644
index 00000000..bc1a3852
--- /dev/null
+++ b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/config/ConfigRefreshTests.java
@@ -0,0 +1,60 @@
+/*
+ *
+ * * Copyright 2013-2016 the original author or authors.
+ * *
+ * * Licensed under the Apache License, Version 2.0 (the "License");
+ * * you may not use this file except in compliance with the License.
+ * * You may obtain a copy of the License at
+ * *
+ * * http://www.apache.org/licenses/LICENSE-2.0
+ * *
+ * * 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.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.cloud.context.scope.refresh.RefreshScopeRefreshedEvent;
+import org.springframework.cloud.netflix.eureka.sample.RefreshEurekaSampleApplication;
+import org.springframework.context.ApplicationEventPublisher;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.netflix.discovery.EurekaClient;
+
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+/**
+ * @author Ryan Baxter
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = RefreshEurekaSampleApplication.class)
+public class ConfigRefreshTests {
+
+ @Autowired
+ private ApplicationEventPublisher publisher;
+
+ @Autowired
+ //Mocked in RefreshEurekaSampleApplication
+ private EurekaClient client;
+
+ @Test
+ // This test is used to verify that getApplications is called the correct number of times
+ // when a refresh event is fired. The getApplications call in EurekaClientConfigurationRefresher.onApplicationEvent
+ // ensures that the EurekaClient bean is recreated after a refresh event and that we reregister the client with
+ //the server
+ public void verifyGetApplications() {
+ if(publisher != null) {
+ publisher.publishEvent(new RefreshScopeRefreshedEvent());
+ }
+ verify(client, times(3)).getApplications();
+ }
+}
diff --git a/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/sample/RefreshEurekaSampleApplication.java b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/sample/RefreshEurekaSampleApplication.java
new file mode 100644
index 00000000..6d1e3cd8
--- /dev/null
+++ b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/sample/RefreshEurekaSampleApplication.java
@@ -0,0 +1,47 @@
+/*
+ *
+ * * Copyright 2013-2016 the original author or authors.
+ * *
+ * * Licensed under the Apache License, Version 2.0 (the "License");
+ * * you may not use this file except in compliance with the License.
+ * * You may obtain a copy of the License at
+ * *
+ * * http://www.apache.org/licenses/LICENSE-2.0
+ * *
+ * * 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.sample;
+
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.netflix.eureka.CloudEurekaClient;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.netflix.discovery.EurekaClient;
+
+import static org.mockito.Mockito.mock;
+
+/**
+ * @author Ryan Baxter
+ */
+@Configuration
+@ComponentScan
+@EnableAutoConfiguration
+@RestController
+@EnableDiscoveryClient
+public class RefreshEurekaSampleApplication {
+
+ @Bean
+ public EurekaClient getClient() {
+ return mock(CloudEurekaClient.class);
+ }
+}
diff --git a/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/ribbon/eureka/EurekaDisabledRibbonClientIntegrationTests.java b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/ribbon/eureka/EurekaDisabledRibbonClientIntegrationTests.java
new file mode 100644
index 00000000..22cd1377
--- /dev/null
+++ b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/ribbon/eureka/EurekaDisabledRibbonClientIntegrationTests.java
@@ -0,0 +1,94 @@
+/*
+ * 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.ribbon.eureka;
+
+import com.netflix.loadbalancer.Server;
+import com.netflix.loadbalancer.ZoneAvoidanceRule;
+import com.netflix.loadbalancer.ZoneAwareLoadBalancer;
+import com.netflix.niws.loadbalancer.NIWSDiscoveryPing;
+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.test.context.SpringBootTest;
+import org.springframework.cloud.commons.util.UtilAutoConfiguration;
+import org.springframework.cloud.netflix.archaius.ArchaiusAutoConfiguration;
+import org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration;
+import org.springframework.cloud.netflix.eureka.EurekaDiscoveryClientConfiguration;
+import org.springframework.cloud.netflix.ribbon.RibbonAutoConfiguration;
+import org.springframework.cloud.netflix.ribbon.RibbonClient;
+import org.springframework.cloud.netflix.ribbon.ServerIntrospector;
+import org.springframework.cloud.netflix.ribbon.SpringClientFactory;
+import org.springframework.cloud.netflix.ribbon.eureka.EurekaRibbonClientPreprocessorIntegrationTests.TestConfiguration;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * Ribbon Eureka client should be disabled if Eureka client is not enabled
+ *
+ * @author Biju Kunjummen
+ */
+@RunWith(SpringJUnit4ClassRunner.class)
+@SpringBootTest(classes = TestConfiguration.class, properties = "eureka.client.enabled=false")
+@DirtiesContext
+public class EurekaDisabledRibbonClientIntegrationTests {
+
+ @Autowired
+ private SpringClientFactory factory;
+
+ @Test
+ public void serverListShouldNotBeEurekaBased() throws Exception {
+ assertThat(getLoadBalancer().getServerListImpl())
+ .isNotInstanceOf(DomainExtractingServerList.class);
+ }
+
+ @Test
+ public void ruleDefaultsToZoneAvoidance() throws Exception {
+ ZoneAvoidanceRule.class.cast(getLoadBalancer().getRule());
+ }
+
+ @Test
+ public void pingShouldNotBeEurekaBased() throws Exception {
+ assertThat(getLoadBalancer().getPing()).isNotInstanceOf(NIWSDiscoveryPing.class);
+ }
+
+ @Test
+ public void serverIntrospectorShouldNotBeEurekaBased() throws Exception {
+ assertThat(this.factory.getInstance("foo", ServerIntrospector.class))
+ .isNotInstanceOf(EurekaServerIntrospector.class);
+ }
+
+ @SuppressWarnings("unchecked")
+ private ZoneAwareLoadBalancer getLoadBalancer() {
+ return (ZoneAwareLoadBalancer) this.factory.getLoadBalancer("foo");
+ }
+
+ @Configuration
+ @RibbonClient("foo")
+ @Import({ UtilAutoConfiguration.class, PropertyPlaceholderAutoConfiguration.class,
+ ArchaiusAutoConfiguration.class, RibbonAutoConfiguration.class,
+ EurekaDiscoveryClientConfiguration.class, EurekaClientAutoConfiguration.class,
+ RibbonEurekaAutoConfiguration.class })
+ protected static class TestConfiguration {
+
+ }
+
+}
diff --git a/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/ribbon/eureka/RibbonEurekaAutoConfigurationTests.java b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/ribbon/eureka/RibbonEurekaAutoConfigurationTests.java
index 32929d00..b81c2bc9 100644
--- a/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/ribbon/eureka/RibbonEurekaAutoConfigurationTests.java
+++ b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/ribbon/eureka/RibbonEurekaAutoConfigurationTests.java
@@ -30,6 +30,7 @@ import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.context.annotation.Bean;
+import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit4.SpringRunner;
import static org.assertj.core.api.Assertions.assertThat;
@@ -42,6 +43,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen
@SpringBootTest(classes = RibbonEurekaAutoConfigurationTests.EurekaClientDisabledApp.class,
properties = { "eureka.client.enabled=false", "spring.application.name=eurekadisabledtest" },
webEnvironment = RANDOM_PORT)
+@DirtiesContext
public class RibbonEurekaAutoConfigurationTests {
@Autowired
diff --git a/spring-cloud-netflix-eureka-server/pom.xml b/spring-cloud-netflix-eureka-server/pom.xml
index b0c011a3..dc952333 100644
--- a/spring-cloud-netflix-eureka-server/pom.xml
+++ b/spring-cloud-netflix-eureka-server/pom.xml
@@ -5,7 +5,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
..
spring-cloud-netflix-eureka-server
diff --git a/spring-cloud-netflix-hystrix-amqp/pom.xml b/spring-cloud-netflix-hystrix-amqp/pom.xml
index 7241938e..08107e4f 100644
--- a/spring-cloud-netflix-hystrix-amqp/pom.xml
+++ b/spring-cloud-netflix-hystrix-amqp/pom.xml
@@ -5,7 +5,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
..
spring-cloud-netflix-hystrix-amqp
diff --git a/spring-cloud-netflix-hystrix-dashboard/pom.xml b/spring-cloud-netflix-hystrix-dashboard/pom.xml
index d99a9591..cfbc2c93 100644
--- a/spring-cloud-netflix-hystrix-dashboard/pom.xml
+++ b/spring-cloud-netflix-hystrix-dashboard/pom.xml
@@ -8,7 +8,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
..
diff --git a/spring-cloud-netflix-hystrix-dashboard/src/main/resources/static/hystrix/components/hystrixCommand/hystrixCommand.js b/spring-cloud-netflix-hystrix-dashboard/src/main/resources/static/hystrix/components/hystrixCommand/hystrixCommand.js
index 9e505e93..9d5724d2 100644
--- a/spring-cloud-netflix-hystrix-dashboard/src/main/resources/static/hystrix/components/hystrixCommand/hystrixCommand.js
+++ b/spring-cloud-netflix-hystrix-dashboard/src/main/resources/static/hystrix/components/hystrixCommand/hystrixCommand.js
@@ -175,6 +175,7 @@
assertNotNull(data,"propertyValue_circuitBreakerSleepWindowInMilliseconds");
assertNotNull(data,"propertyValue_circuitBreakerErrorThresholdPercentage");
assertNotNull(data,"propertyValue_circuitBreakerForceOpen");
+ assertNotNull(data,"propertyValue_circuitBreakerForceClosed");
assertNotNull(data,"propertyValue_executionIsolationStrategy");
assertNotNull(data,"propertyValue_executionIsolationThreadTimeoutInMilliseconds");
assertNotNull(data,"propertyValue_executionIsolationThreadInterruptOnTimeout");
@@ -539,5 +540,3 @@
return x1 + x2;
}
})(window);
-
-
diff --git a/spring-cloud-netflix-hystrix-stream/pom.xml b/spring-cloud-netflix-hystrix-stream/pom.xml
index f63eec0e..9c05c847 100644
--- a/spring-cloud-netflix-hystrix-stream/pom.xml
+++ b/spring-cloud-netflix-hystrix-stream/pom.xml
@@ -5,7 +5,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
..
spring-cloud-netflix-hystrix-stream
@@ -60,12 +60,6 @@
eureka-client
test
-
- org.projectlombok
- lombok
- compile
- true
-
org.springframework.boot
spring-boot-starter-test
@@ -83,7 +77,7 @@
org.springframework.cloud
- spring-cloud-stream-binder-rabbit
+ spring-cloud-stream-test-support
test
diff --git a/spring-cloud-netflix-hystrix-stream/src/main/java/org/springframework/cloud/netflix/hystrix/stream/HystrixStreamProperties.java b/spring-cloud-netflix-hystrix-stream/src/main/java/org/springframework/cloud/netflix/hystrix/stream/HystrixStreamProperties.java
index 50fe3048..86db29d8 100644
--- a/spring-cloud-netflix-hystrix-stream/src/main/java/org/springframework/cloud/netflix/hystrix/stream/HystrixStreamProperties.java
+++ b/spring-cloud-netflix-hystrix-stream/src/main/java/org/springframework/cloud/netflix/hystrix/stream/HystrixStreamProperties.java
@@ -19,13 +19,10 @@ package org.springframework.cloud.netflix.hystrix.stream;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.netflix.hystrix.HystrixConstants;
-import lombok.Data;
-
/**
* @author Spencer Gibb
*/
@ConfigurationProperties("hystrix.stream.queue")
-@Data
public class HystrixStreamProperties {
/** Flag to indicate that Hystrix Stream is enabled. Default is true. */
@@ -52,4 +49,68 @@ public class HystrixStreamProperties {
/** The size of the metrics queue. This queue drains to the stream. Defaults to 1000. */
private int size = 1000;
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ public boolean isPrefixMetricName() {
+ return prefixMetricName;
+ }
+
+ public void setPrefixMetricName(boolean prefixMetricName) {
+ this.prefixMetricName = prefixMetricName;
+ }
+
+ public boolean isSendId() {
+ return sendId;
+ }
+
+ public void setSendId(boolean sendId) {
+ this.sendId = sendId;
+ }
+
+ public String getDestination() {
+ return destination;
+ }
+
+ public void setDestination(String destination) {
+ this.destination = destination;
+ }
+
+ public String getContentType() {
+ return contentType;
+ }
+
+ public void setContentType(String contentType) {
+ this.contentType = contentType;
+ }
+
+ public long getSendRate() {
+ return sendRate;
+ }
+
+ public void setSendRate(long sendRate) {
+ this.sendRate = sendRate;
+ }
+
+ public long getGatherRate() {
+ return gatherRate;
+ }
+
+ public void setGatherRate(long gatherRate) {
+ this.gatherRate = gatherRate;
+ }
+
+ public int getSize() {
+ return size;
+ }
+
+ public void setSize(int size) {
+ this.size = size;
+ }
+
}
diff --git a/spring-cloud-netflix-hystrix-stream/src/main/java/org/springframework/cloud/netflix/hystrix/stream/HystrixStreamTask.java b/spring-cloud-netflix-hystrix-stream/src/main/java/org/springframework/cloud/netflix/hystrix/stream/HystrixStreamTask.java
index 2af36637..2f6b4ee8 100644
--- a/spring-cloud-netflix-hystrix-stream/src/main/java/org/springframework/cloud/netflix/hystrix/stream/HystrixStreamTask.java
+++ b/spring-cloud-netflix-hystrix-stream/src/main/java/org/springframework/cloud/netflix/hystrix/stream/HystrixStreamTask.java
@@ -22,16 +22,6 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.concurrent.LinkedBlockingQueue;
-import org.springframework.beans.BeansException;
-import org.springframework.cloud.client.ServiceInstance;
-import org.springframework.cloud.client.discovery.DiscoveryClient;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-import org.springframework.messaging.MessageChannel;
-import org.springframework.messaging.MessageHeaders;
-import org.springframework.messaging.support.MessageBuilder;
-import org.springframework.scheduling.annotation.Scheduled;
-
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import com.netflix.hystrix.HystrixCircuitBreaker;
@@ -42,7 +32,18 @@ import com.netflix.hystrix.HystrixThreadPoolKey;
import com.netflix.hystrix.HystrixThreadPoolMetrics;
import com.netflix.hystrix.util.HystrixRollingNumberEvent;
-import lombok.extern.apachecommons.CommonsLog;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.springframework.beans.BeansException;
+import org.springframework.cloud.client.ServiceInstance;
+import org.springframework.cloud.client.discovery.DiscoveryClient;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.messaging.MessageChannel;
+import org.springframework.messaging.MessageHeaders;
+import org.springframework.messaging.support.MessageBuilder;
+import org.springframework.scheduling.annotation.Scheduled;
/**
* @author Spencer Gibb
@@ -50,8 +51,9 @@ import lombok.extern.apachecommons.CommonsLog;
* @see com.netflix.hystrix.contrib.metrics.eventstream.HystrixMetricsPoller (nested
* private class MetricsPoller)
*/
-@CommonsLog
public class HystrixStreamTask implements ApplicationContextAware {
+
+ private static Log log = LogFactory.getLog(HystrixStreamTask.class);
private MessageChannel outboundChannel;
diff --git a/spring-cloud-netflix-hystrix-stream/src/test/java/org/springframework/cloud/netflix/hystrix/stream/HystrixStreamTests.java b/spring-cloud-netflix-hystrix-stream/src/test/java/org/springframework/cloud/netflix/hystrix/stream/HystrixStreamTests.java
index d8bae20e..f6a278f7 100644
--- a/spring-cloud-netflix-hystrix-stream/src/test/java/org/springframework/cloud/netflix/hystrix/stream/HystrixStreamTests.java
+++ b/spring-cloud-netflix-hystrix-stream/src/test/java/org/springframework/cloud/netflix/hystrix/stream/HystrixStreamTests.java
@@ -18,6 +18,7 @@ package org.springframework.cloud.netflix.hystrix.stream;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
@@ -39,6 +40,12 @@ import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
@DirtiesContext
public class HystrixStreamTests {
+ @Autowired
+ private HystrixStreamTask task;
+
+ @Autowired
+ private Application application;
+
@EnableAutoConfiguration
@EnableCircuitBreaker
@RestController
@@ -58,7 +65,8 @@ public class HystrixStreamTests {
@Test
public void contextLoads() {
-
+ this.application.hello();
+ this.task.gatherMetrics();
}
}
diff --git a/spring-cloud-netflix-sidecar/pom.xml b/spring-cloud-netflix-sidecar/pom.xml
index 449160fb..a320cb22 100644
--- a/spring-cloud-netflix-sidecar/pom.xml
+++ b/spring-cloud-netflix-sidecar/pom.xml
@@ -5,7 +5,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
..
spring-cloud-netflix-sidecar
diff --git a/spring-cloud-netflix-spectator/pom.xml b/spring-cloud-netflix-spectator/pom.xml
index f3346e75..f717bf3d 100644
--- a/spring-cloud-netflix-spectator/pom.xml
+++ b/spring-cloud-netflix-spectator/pom.xml
@@ -6,7 +6,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
..
spring-cloud-netflix-spectator
diff --git a/spring-cloud-netflix-turbine-stream/pom.xml b/spring-cloud-netflix-turbine-stream/pom.xml
index cc70a66c..58475fe2 100644
--- a/spring-cloud-netflix-turbine-stream/pom.xml
+++ b/spring-cloud-netflix-turbine-stream/pom.xml
@@ -5,7 +5,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
..
spring-cloud-netflix-turbine-stream
@@ -58,11 +58,6 @@
spring-cloud-commons
true
-
- commons-logging
- commons-logging
- 1.2
-
org.springframework.integration
spring-integration-core
diff --git a/spring-cloud-netflix-turbine/pom.xml b/spring-cloud-netflix-turbine/pom.xml
index 0ba00f39..410c9b4f 100644
--- a/spring-cloud-netflix-turbine/pom.xml
+++ b/spring-cloud-netflix-turbine/pom.xml
@@ -5,7 +5,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
..
spring-cloud-netflix-turbine
diff --git a/spring-cloud-starter-archaius/pom.xml b/spring-cloud-starter-archaius/pom.xml
index 48b6445d..60377136 100644
--- a/spring-cloud-starter-archaius/pom.xml
+++ b/spring-cloud-starter-archaius/pom.xml
@@ -5,7 +5,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
..
spring-cloud-starter-archaius
@@ -36,12 +36,12 @@
commons-configuration
commons-configuration
-
+
com.fasterxml.jackson.core
diff --git a/spring-cloud-starter-atlas/pom.xml b/spring-cloud-starter-atlas/pom.xml
index 9a51e304..a9156eaa 100644
--- a/spring-cloud-starter-atlas/pom.xml
+++ b/spring-cloud-starter-atlas/pom.xml
@@ -5,7 +5,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
..
spring-cloud-starter-atlas
diff --git a/spring-cloud-starter-eureka-server/pom.xml b/spring-cloud-starter-eureka-server/pom.xml
index 2e6c5186..1f79cdc8 100644
--- a/spring-cloud-starter-eureka-server/pom.xml
+++ b/spring-cloud-starter-eureka-server/pom.xml
@@ -5,7 +5,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
..
spring-cloud-starter-eureka-server
diff --git a/spring-cloud-starter-eureka/pom.xml b/spring-cloud-starter-eureka/pom.xml
index 6b3e458b..9b1923f7 100644
--- a/spring-cloud-starter-eureka/pom.xml
+++ b/spring-cloud-starter-eureka/pom.xml
@@ -5,7 +5,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
..
spring-cloud-starter-eureka
diff --git a/spring-cloud-starter-feign/pom.xml b/spring-cloud-starter-feign/pom.xml
index 03b04a16..dfd2bcd7 100644
--- a/spring-cloud-starter-feign/pom.xml
+++ b/spring-cloud-starter-feign/pom.xml
@@ -5,7 +5,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
..
spring-cloud-starter-feign
diff --git a/spring-cloud-starter-hystrix-dashboard/pom.xml b/spring-cloud-starter-hystrix-dashboard/pom.xml
index 4bf7c3a6..3a43c78c 100644
--- a/spring-cloud-starter-hystrix-dashboard/pom.xml
+++ b/spring-cloud-starter-hystrix-dashboard/pom.xml
@@ -5,7 +5,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
..
spring-cloud-starter-hystrix-dashboard
diff --git a/spring-cloud-starter-hystrix/pom.xml b/spring-cloud-starter-hystrix/pom.xml
index 6af32fd3..dedf5ab2 100644
--- a/spring-cloud-starter-hystrix/pom.xml
+++ b/spring-cloud-starter-hystrix/pom.xml
@@ -5,7 +5,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
..
spring-cloud-starter-hystrix
diff --git a/spring-cloud-starter-ribbon/pom.xml b/spring-cloud-starter-ribbon/pom.xml
index bd4c1776..93bce8a0 100644
--- a/spring-cloud-starter-ribbon/pom.xml
+++ b/spring-cloud-starter-ribbon/pom.xml
@@ -5,7 +5,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
..
spring-cloud-starter-ribbon
diff --git a/spring-cloud-starter-spectator/pom.xml b/spring-cloud-starter-spectator/pom.xml
index 14895a91..77d5755d 100644
--- a/spring-cloud-starter-spectator/pom.xml
+++ b/spring-cloud-starter-spectator/pom.xml
@@ -5,7 +5,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
..
spring-cloud-starter-spectator
diff --git a/spring-cloud-starter-turbine-amqp/pom.xml b/spring-cloud-starter-turbine-amqp/pom.xml
index f5297611..c62e578d 100644
--- a/spring-cloud-starter-turbine-amqp/pom.xml
+++ b/spring-cloud-starter-turbine-amqp/pom.xml
@@ -5,7 +5,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
..
spring-cloud-starter-turbine-amqp
diff --git a/spring-cloud-starter-turbine-stream/pom.xml b/spring-cloud-starter-turbine-stream/pom.xml
index 5025399f..8202e97d 100644
--- a/spring-cloud-starter-turbine-stream/pom.xml
+++ b/spring-cloud-starter-turbine-stream/pom.xml
@@ -5,7 +5,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
..
spring-cloud-starter-turbine-stream
diff --git a/spring-cloud-starter-turbine/pom.xml b/spring-cloud-starter-turbine/pom.xml
index 001d026c..64dd0a76 100644
--- a/spring-cloud-starter-turbine/pom.xml
+++ b/spring-cloud-starter-turbine/pom.xml
@@ -5,7 +5,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
..
spring-cloud-starter-turbine
diff --git a/spring-cloud-starter-zuul/pom.xml b/spring-cloud-starter-zuul/pom.xml
index 24ed16a8..a5ff32ab 100644
--- a/spring-cloud-starter-zuul/pom.xml
+++ b/spring-cloud-starter-zuul/pom.xml
@@ -5,7 +5,7 @@
org.springframework.cloud
spring-cloud-netflix
- 2.0.0.BUILD-SNAPSHOT
+ 1.3.1.BUILD-SNAPSHOT
..
spring-cloud-starter-zuul