From cf3bedb7e0e05bf4598f09b5041c5468e5237a76 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Fri, 2 Jan 2015 10:12:17 +0000 Subject: [PATCH] Add vanilla Ribbon autconfiguration --- ...EurekaClientCompilerAutoConfiguration.java | 4 +- ...RibbonClientCompilerAutoConfiguration.java | 57 +++++++++++++++++++ ...oot.cli.compiler.CompilerAutoConfiguration | 1 + 3 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 spring-cloud-cli/src/main/java/org/springframework/cloud/cli/compiler/RibbonClientCompilerAutoConfiguration.java diff --git a/spring-cloud-cli/src/main/java/org/springframework/cloud/cli/compiler/EurekaClientCompilerAutoConfiguration.java b/spring-cloud-cli/src/main/java/org/springframework/cloud/cli/compiler/EurekaClientCompilerAutoConfiguration.java index 4245792..70216dc 100644 --- a/spring-cloud-cli/src/main/java/org/springframework/cloud/cli/compiler/EurekaClientCompilerAutoConfiguration.java +++ b/spring-cloud-cli/src/main/java/org/springframework/cloud/cli/compiler/EurekaClientCompilerAutoConfiguration.java @@ -46,8 +46,8 @@ public class EurekaClientCompilerAutoConfiguration extends CompilerAutoConfigura "org.springframework.cloud.client.discovery.EnableDiscoveryClient", "org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean", "org.springframework.cloud.netflix.eureka.EurekaClientConfigBean", - "com.netflix.discovery.DiscoveryClient", - "com.netflix.appinfo.InstanceInfo"); + "org.springframework.cloud.client.discovery.DiscoveryClient", + "org.springframework.cloud.client.ServiceInstance"); } } diff --git a/spring-cloud-cli/src/main/java/org/springframework/cloud/cli/compiler/RibbonClientCompilerAutoConfiguration.java b/spring-cloud-cli/src/main/java/org/springframework/cloud/cli/compiler/RibbonClientCompilerAutoConfiguration.java new file mode 100644 index 0000000..332c053 --- /dev/null +++ b/spring-cloud-cli/src/main/java/org/springframework/cloud/cli/compiler/RibbonClientCompilerAutoConfiguration.java @@ -0,0 +1,57 @@ +/* + * Copyright 2013-2014 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.cloud.cli.compiler; + +import org.codehaus.groovy.ast.ClassNode; +import org.codehaus.groovy.control.CompilationFailedException; +import org.codehaus.groovy.control.customizers.ImportCustomizer; +import org.springframework.boot.cli.compiler.AstUtils; +import org.springframework.boot.cli.compiler.CompilerAutoConfiguration; +import org.springframework.boot.cli.compiler.DependencyCustomizer; + +/** + * @author Dave Syer + * + */ +public class RibbonClientCompilerAutoConfiguration extends CompilerAutoConfiguration { + + @Override + public boolean matches(ClassNode classNode) { + return AstUtils.hasAtLeastOneAnnotation(classNode, "RibbonClient"); + } + + @Override + public void applyDependencies(DependencyCustomizer dependencies) { + dependencies.ifAnyMissingClasses( + "org.springframework.cloud.netflix.ribbon.RibbonClient").add( + "spring-cloud-starter-ribbon", "spring-web"); + } + + @Override + public void applyImports(ImportCustomizer imports) throws CompilationFailedException { + imports.addImports("org.springframework.cloud.netflix.ribbon.RibbonClient", + "org.springframework.cloud.client.loadbalancer.LoadBalancerClient", + "org.springframework.web.client.RestTemplate", + "com.netflix.client.config.DefaultClientConfigImpl", + "com.netflix.client.config.IClientConfig", + "com.netflix.loadbalancer.DynamicServerListLoadBalancer", + "com.netflix.loadbalancer.ILoadBalancer", + "com.netflix.loadbalancer.Server", "com.netflix.loadbalancer.ServerList", + "com.netflix.loadbalancer.ServerListFilter", + "com.netflix.niws.client.http.RestClient"); + } + +} diff --git a/spring-cloud-cli/src/main/resources/META-INF/services/org.springframework.boot.cli.compiler.CompilerAutoConfiguration b/spring-cloud-cli/src/main/resources/META-INF/services/org.springframework.boot.cli.compiler.CompilerAutoConfiguration index d3d4aae..5703b42 100644 --- a/spring-cloud-cli/src/main/resources/META-INF/services/org.springframework.boot.cli.compiler.CompilerAutoConfiguration +++ b/spring-cloud-cli/src/main/resources/META-INF/services/org.springframework.boot.cli.compiler.CompilerAutoConfiguration @@ -6,4 +6,5 @@ org.springframework.cloud.cli.compiler.EurekaClientCompilerAutoConfiguration org.springframework.cloud.cli.compiler.EurekaServerCompilerAutoConfiguration org.springframework.cloud.cli.compiler.HystrixCompilerAutoConfiguration org.springframework.cloud.cli.compiler.HystrixDashboardCompilerAutoConfiguration +org.springframework.cloud.cli.compiler.RibbonClientCompilerAutoConfiguration org.springframework.cloud.cli.compiler.ZuulCompilerAutoConfiguration