diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/aop/AopAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/aop/AopAutoConfigurationTests.java index 592ec61633d..a653b844ca7 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/aop/AopAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/aop/AopAutoConfigurationTests.java @@ -35,12 +35,6 @@ import static org.junit.Assert.assertTrue; */ public class AopAutoConfigurationTests { - public interface TestInterface { - - public abstract void foo(); - - } - private AnnotationConfigApplicationContext context; @Test @@ -118,4 +112,10 @@ public class AopAutoConfigurationTests { } } + public interface TestInterface { + + public abstract void foo(); + + } + } diff --git a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/ArtifactCoordinatesResolver.java b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/ArtifactCoordinatesResolver.java index 4a931503061..cc32a6dfb7c 100644 --- a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/ArtifactCoordinatesResolver.java +++ b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/ArtifactCoordinatesResolver.java @@ -27,9 +27,7 @@ public interface ArtifactCoordinatesResolver { /** * Gets the group id of the artifact identified by the given {@code artifactId}. * Returns {@code null} if the artifact is unknown to the resolver. - * * @param artifactId The id of the artifact - * * @return The group id of the artifact */ String getGroupId(String artifactId); @@ -37,9 +35,7 @@ public interface ArtifactCoordinatesResolver { /** * Gets the version of the artifact identified by the given {@code artifactId}. * Returns {@code null} if the artifact is unknown to the resolver. - * * @param artifactId The id of the artifact - * * @return The version of the artifact */ String getVersion(String artifactId); diff --git a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/AstUtils.java b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/AstUtils.java index 58935d27a6c..a8e60c5bfe7 100644 --- a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/AstUtils.java +++ b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/AstUtils.java @@ -18,7 +18,6 @@ package org.springframework.boot.cli.compiler; import java.util.Arrays; import java.util.HashSet; -import java.util.List; import java.util.Set; import org.codehaus.groovy.ast.AnnotatedNode; @@ -36,13 +35,29 @@ import org.codehaus.groovy.ast.MethodNode; */ public abstract class AstUtils { + /** + * Determine if a {@link ClassNode} has one or more of the specified annotations on + * the class or any of its methods. N.B. the type names are not normally fully + * qualified. + */ + public static boolean hasAtLeastOneAnnotation(ClassNode node, String... annotations) { + if (hasAtLeastOneAnnotation((AnnotatedNode) node, annotations)) { + return true; + } + for (MethodNode method : node.getMethods()) { + if (hasAtLeastOneAnnotation(method, annotations)) { + return true; + } + } + return false; + } + /** * Determine if an {@link AnnotatedNode} has one or more of the specified annotations. * N.B. the annotation type names are not normally fully qualified. */ public static boolean hasAtLeastOneAnnotation(AnnotatedNode node, String... annotations) { - for (AnnotationNode annotationNode : node.getAnnotations()) { for (String annotation : annotations) { if (annotation.equals(annotationNode.getClassNode().getName())) { @@ -50,75 +65,40 @@ public abstract class AstUtils { } } } - return false; - } - /** - * Determine if a {@link ClassNode} has one or more of the specified annotations on the class - * or any of its methods. - * N.B. the type names are not normally fully qualified. - */ - public static boolean hasAtLeastOneAnnotation(ClassNode node, String... annotations) { - for (AnnotationNode annotationNode : node.getAnnotations()) { - for (String annotation : annotations) { - if (annotation.equals(annotationNode.getClassNode().getName())) { - return true; - } - } - } - - List methods = node.getMethods(); - for (MethodNode method : methods) { - for (AnnotationNode annotationNode : method.getAnnotations()) { - for (String annotation : annotations) { - if (annotation.equals(annotationNode.getClassNode().getName())) { - return true; - } - } - } - } - return false; - } - /** * Determine if a {@link ClassNode} has one or more fields of the specified types or * method returning one or more of the specified types. N.B. the type names are not * normally fully qualified. */ public static boolean hasAtLeastOneFieldOrMethod(ClassNode node, String... types) { - - Set set = new HashSet(Arrays.asList(types)); - List fields = node.getFields(); - for (FieldNode field : fields) { - if (set.contains(field.getType().getName())) { + Set typesSet = new HashSet(Arrays.asList(types)); + for (FieldNode field : node.getFields()) { + if (typesSet.contains(field.getType().getName())) { return true; } } - List methods = node.getMethods(); - for (MethodNode method : methods) { - if (set.contains(method.getReturnType().getName())) { + for (MethodNode method : node.getMethods()) { + if (typesSet.contains(method.getReturnType().getName())) { return true; } } - return false; - } - /** - * Determine if a {@link ClassNode} subclasses any of the specified types - * N.B. the type names are not normally fully qualified. - */ - public static boolean subclasses(ClassNode node, String... types) { - for (String type : types) { - if (node.getSuperClass().getName().equals(type)) { - return true; - } - } - - return false; - } + /** + * Determine if a {@link ClassNode} subclasses any of the specified types N.B. the + * type names are not normally fully qualified. + */ + public static boolean subclasses(ClassNode node, String... types) { + for (String type : types) { + if (node.getSuperClass().getName().equals(type)) { + return true; + } + } + return false; + } } diff --git a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/GroovyCompiler.java b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/GroovyCompiler.java index 27a7ff5a3ef..e3be5742a25 100644 --- a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/GroovyCompiler.java +++ b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/GroovyCompiler.java @@ -64,6 +64,7 @@ import org.codehaus.groovy.transform.ASTTransformationVisitor; * * @author Phillip Webb * @author Dave Syer + * @author Andy Wilkinson */ public class GroovyCompiler { @@ -73,6 +74,8 @@ public class GroovyCompiler { private ArtifactCoordinatesResolver artifactCoordinatesResolver; + private final ASTTransformation dependencyCoordinatesTransformation = new DefaultDependencyCoordinatesAstTransformation(); + /** * Create a new {@link GroovyCompiler} instance. * @param configuration the compiler configuration @@ -168,7 +171,6 @@ public class GroovyCompiler { try { Field field = CompilationUnit.class.getDeclaredField("phaseOperations"); field.setAccessible(true); - LinkedList[] phaseOperations = (LinkedList[]) field.get(compilationUnit); processConversionOperations(phaseOperations[Phases.CONVERSION]); } @@ -186,13 +188,10 @@ public class GroovyCompiler { if (operation.getClass().getName() .startsWith(ASTTransformationVisitor.class.getName())) { conversionOperations.add(i, new CompilationUnit.SourceUnitOperation() { - - private final ASTTransformation transformation = new DefaultDependencyCoordinatesAstTransformation(); - @Override public void call(SourceUnit source) throws CompilationFailedException { - this.transformation.visit(new ASTNode[] { source.getAST() }, - source); + GroovyCompiler.this.dependencyCoordinatesTransformation.visit( + new ASTNode[] { source.getAST() }, source); } }); break; @@ -312,6 +311,7 @@ public class GroovyCompiler { .getGroupId(module)); grabAnnotation.setMember("group", groupIdExpression); } + if (grabAnnotation.getMember("version") == null) { ConstantExpression versionExpression = new ConstantExpression( GroovyCompiler.this.artifactCoordinatesResolver diff --git a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/PropertiesArtifactCoordinatesResolver.java b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/PropertiesArtifactCoordinatesResolver.java index 63ca10f5804..41b8ec2c67a 100644 --- a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/PropertiesArtifactCoordinatesResolver.java +++ b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/PropertiesArtifactCoordinatesResolver.java @@ -24,6 +24,11 @@ import java.net.URL; import java.util.Collections; import java.util.Properties; +/** + * {@link ArtifactCoordinatesResolver} backed by a properties file. + * + * @author Andy Wilkinson + */ final class PropertiesArtifactCoordinatesResolver implements ArtifactCoordinatesResolver { private final GroovyClassLoader loader; @@ -60,7 +65,7 @@ final class PropertiesArtifactCoordinatesResolver implements ArtifactCoordinates try { properties.load(inputStream); } - catch (IOException ioe) { + catch (IOException ex) { // Swallow and continue } finally { @@ -68,7 +73,7 @@ final class PropertiesArtifactCoordinatesResolver implements ArtifactCoordinates } } } - catch (IOException e) { + catch (IOException ex) { // Swallow and continue } this.properties = properties; diff --git a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/autoconfigure/JUnitCompilerAutoConfiguration.java b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/autoconfigure/JUnitCompilerAutoConfiguration.java index 74ca976deec..4659c5884bf 100644 --- a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/autoconfigure/JUnitCompilerAutoConfiguration.java +++ b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/autoconfigure/JUnitCompilerAutoConfiguration.java @@ -25,28 +25,26 @@ import org.springframework.boot.cli.compiler.DependencyCustomizer; /** * {@link CompilerAutoConfiguration} for JUnit - * + * * @author Greg Turnquist */ public class JUnitCompilerAutoConfiguration extends CompilerAutoConfiguration { - @Override - public boolean matches(ClassNode classNode) { - return AstUtils.hasAtLeastOneAnnotation(classNode, "Test"); - } + @Override + public boolean matches(ClassNode classNode) { + return AstUtils.hasAtLeastOneAnnotation(classNode, "Test"); + } - @Override - public void applyDependencies(DependencyCustomizer dependencies) - throws CompilationFailedException { - dependencies.add("junit").add("spring-test").add("hamcrest-library"); - } - - @Override - public void applyImports(ImportCustomizer imports) throws CompilationFailedException { - imports.addStarImports("org.junit") - .addStaticStars("org.junit.Assert").addImports() - .addStaticStars("org.hamcrest.MatcherAssert") - .addStaticStars("org.hamcrest.Matchers"); - } + @Override + public void applyDependencies(DependencyCustomizer dependencies) + throws CompilationFailedException { + dependencies.add("junit").add("spring-test").add("hamcrest-library"); + } + @Override + public void applyImports(ImportCustomizer imports) throws CompilationFailedException { + imports.addStarImports("org.junit").addStaticStars("org.junit.Assert") + .addStaticStars("org.hamcrest.MatcherAssert") + .addStaticStars("org.hamcrest.Matchers"); + } } diff --git a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/autoconfigure/SpockCompilerAutoConfiguration.java b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/autoconfigure/SpockCompilerAutoConfiguration.java index 49665010a0f..3c626857b01 100644 --- a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/autoconfigure/SpockCompilerAutoConfiguration.java +++ b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/autoconfigure/SpockCompilerAutoConfiguration.java @@ -25,25 +25,25 @@ import org.springframework.boot.cli.compiler.DependencyCustomizer; /** * {@link CompilerAutoConfiguration} for Spock test framework - * + * * @author Greg Turnquist */ public class SpockCompilerAutoConfiguration extends CompilerAutoConfiguration { - @Override - public boolean matches(ClassNode classNode) { - return AstUtils.subclasses(classNode, "Specification"); - } + @Override + public boolean matches(ClassNode classNode) { + return AstUtils.subclasses(classNode, "Specification"); + } - @Override - public void applyDependencies(DependencyCustomizer dependencies) - throws CompilationFailedException { - dependencies.add("spock-core"); - } + @Override + public void applyDependencies(DependencyCustomizer dependencies) + throws CompilationFailedException { + dependencies.add("spock-core"); + } - @Override - public void applyImports(ImportCustomizer imports) throws CompilationFailedException { - imports.addStarImports("spock.lang"); - } + @Override + public void applyImports(ImportCustomizer imports) throws CompilationFailedException { + imports.addStarImports("spock.lang"); + } } diff --git a/spring-boot-samples/spring-boot-sample-amqp/src/main/java/org/springframework/boot/sample/amqp/SampleAmqpSimpleApplication.java b/spring-boot-samples/spring-boot-sample-amqp/src/main/java/org/springframework/boot/sample/amqp/SampleAmqpSimpleApplication.java index 6ac230983c3..6213cb27803 100644 --- a/spring-boot-samples/spring-boot-sample-amqp/src/main/java/org/springframework/boot/sample/amqp/SampleAmqpSimpleApplication.java +++ b/spring-boot-samples/spring-boot-sample-amqp/src/main/java/org/springframework/boot/sample/amqp/SampleAmqpSimpleApplication.java @@ -33,7 +33,7 @@ public class SampleAmqpSimpleApplication { @Autowired private AmqpTemplate amqpTemplate; - + @Autowired private ConnectionFactory connectionFactory; @@ -49,7 +49,8 @@ public class SampleAmqpSimpleApplication { @Bean public SimpleMessageListenerContainer container() { - SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(connectionFactory); + SimpleMessageListenerContainer container = new SimpleMessageListenerContainer( + this.connectionFactory); Object listener = new Object() { @SuppressWarnings("unused") public void handleMessage(String foo) { @@ -62,7 +63,6 @@ public class SampleAmqpSimpleApplication { return container; } - public static void main(String[] args) throws Exception { SpringApplication.run(SampleAmqpSimpleApplication.class, args); } diff --git a/spring-boot-samples/spring-boot-sample-amqp/src/main/java/org/springframework/boot/sample/amqp/Sender.java b/spring-boot-samples/spring-boot-sample-amqp/src/main/java/org/springframework/boot/sample/amqp/Sender.java index 432fd0ddd6b..e91cbc3471f 100644 --- a/spring-boot-samples/spring-boot-sample-amqp/src/main/java/org/springframework/boot/sample/amqp/Sender.java +++ b/spring-boot-samples/spring-boot-sample-amqp/src/main/java/org/springframework/boot/sample/amqp/Sender.java @@ -1,3 +1,19 @@ +/* + * Copyright 2012-2013 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.boot.sample.amqp; import javax.annotation.PostConstruct; @@ -15,15 +31,15 @@ public class Sender { @Autowired private AmqpAdmin amqpAdmin; - + @PostConstruct public void setUpQueue() { - amqpAdmin.declareQueue(new Queue("foo")); + this.amqpAdmin.declareQueue(new Queue("foo")); } - - @Scheduled(fixedDelay=1000L) + + @Scheduled(fixedDelay = 1000L) public void send() { - rabbitTemplate.convertAndSend("foo","hello"); + this.rabbitTemplate.convertAndSend("foo", "hello"); } - + } diff --git a/spring-boot-samples/spring-boot-sample-data-jpa/src/main/java/org/springframework/boot/sample/data/jpa/service/HotelServiceImpl.java b/spring-boot-samples/spring-boot-sample-data-jpa/src/main/java/org/springframework/boot/sample/data/jpa/service/HotelServiceImpl.java index 8c4f6c388e2..14918cc7f6c 100644 --- a/spring-boot-samples/spring-boot-sample-data-jpa/src/main/java/org/springframework/boot/sample/data/jpa/service/HotelServiceImpl.java +++ b/spring-boot-samples/spring-boot-sample-data-jpa/src/main/java/org/springframework/boot/sample/data/jpa/service/HotelServiceImpl.java @@ -42,7 +42,7 @@ class HotelServiceImpl implements HotelService { private final HotelRepository hotelRepository; private final ReviewRepository reviewRepository; - + @Autowired public HotelServiceImpl(HotelRepository hotelRepository, ReviewRepository reviewRepository) { diff --git a/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/SpringBootPlugin.java b/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/SpringBootPlugin.java index df1c37a47f1..6b50fefe1e5 100644 --- a/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/SpringBootPlugin.java +++ b/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/SpringBootPlugin.java @@ -26,42 +26,43 @@ import org.springframework.boot.gradle.task.RunJar; /** * Gradle 'Spring Boot' {@link Plugin}. - * + * * @author Phillip Webb */ public class SpringBootPlugin implements Plugin { - private static final String REPACKAGE_TASK_NAME = "repackage"; - private static final String RUN_JAR_TASK_NAME = "runJar"; + private static final String REPACKAGE_TASK_NAME = "repackage"; - @Override - public void apply(Project project) { - project.getPlugins().apply(BasePlugin.class); - project.getPlugins().apply(JavaPlugin.class); - project.getExtensions().create("springBoot", SpringBootPluginExtension.class); - Repackage packageTask = addRepackageTask(project); - ensureTaskRunsOnAssembly(project, packageTask); - addRunJarTask(project); - } + private static final String RUN_JAR_TASK_NAME = "runJar"; - private void addRunJarTask(Project project) { - RunJar runJarTask = project.getTasks().create(RUN_JAR_TASK_NAME, RunJar.class); - runJarTask.setDescription("Run the executable JAR/WAR"); - runJarTask.setGroup("Execution"); - runJarTask.dependsOn(REPACKAGE_TASK_NAME); - } + @Override + public void apply(Project project) { + project.getPlugins().apply(BasePlugin.class); + project.getPlugins().apply(JavaPlugin.class); + project.getExtensions().create("springBoot", SpringBootPluginExtension.class); + Repackage packageTask = addRepackageTask(project); + ensureTaskRunsOnAssembly(project, packageTask); + addRunJarTask(project); + } - private Repackage addRepackageTask(Project project) { - Repackage packageTask = project.getTasks().create(REPACKAGE_TASK_NAME, Repackage.class); - packageTask.setDescription("Repackage existing JAR and WAR " - + "archives so that they can be executed from the command " + "line using 'java -jar'"); - packageTask.setGroup(BasePlugin.BUILD_GROUP); - packageTask.dependsOn(project.getConfigurations().getByName(Dependency.ARCHIVES_CONFIGURATION) - .getAllArtifacts().getBuildDependencies()); - return packageTask; - } + private void addRunJarTask(Project project) { + RunJar runJarTask = project.getTasks().create(RUN_JAR_TASK_NAME, RunJar.class); + runJarTask.setDescription("Run the executable JAR/WAR"); + runJarTask.setGroup("Execution"); + runJarTask.dependsOn(REPACKAGE_TASK_NAME); + } - private void ensureTaskRunsOnAssembly(Project project, Repackage task) { - project.getTasks().getByName(BasePlugin.ASSEMBLE_TASK_NAME).dependsOn(task); - } + private Repackage addRepackageTask(Project project) { + Repackage packageTask = project.getTasks().create(REPACKAGE_TASK_NAME, Repackage.class); + packageTask.setDescription("Repackage existing JAR and WAR " + + "archives so that they can be executed from the command " + "line using 'java -jar'"); + packageTask.setGroup(BasePlugin.BUILD_GROUP); + packageTask.dependsOn(project.getConfigurations().getByName(Dependency.ARCHIVES_CONFIGURATION) + .getAllArtifacts().getBuildDependencies()); + return packageTask; + } + + private void ensureTaskRunsOnAssembly(Project project, Repackage task) { + project.getTasks().getByName(BasePlugin.ASSEMBLE_TASK_NAME).dependsOn(task); + } } diff --git a/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java b/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java index 83a43959b37..473d3d9bb52 100644 --- a/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java +++ b/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java @@ -644,6 +644,15 @@ public class SpringApplication { this.initializers = new ArrayList>(initializers); } + /** + * Add {@link ApplicationContextInitializer}s to be applied to the Spring + * {@link ApplicationContext} . + * @param initializers the initializers to add + */ + public void addInitializers(ApplicationContextInitializer... initializers) { + this.initializers.addAll(Arrays.asList(initializers)); + } + /** * Returns a mutable list of the {@link ApplicationContextInitializer}s that will be * applied to the Spring {@link ApplicationContext}. diff --git a/spring-boot/src/main/java/org/springframework/boot/context/initializer/ContextIdApplicationContextInitializer.java b/spring-boot/src/main/java/org/springframework/boot/context/initializer/ContextIdApplicationContextInitializer.java index 23410ede93c..a33b1e2c227 100644 --- a/spring-boot/src/main/java/org/springframework/boot/context/initializer/ContextIdApplicationContextInitializer.java +++ b/spring-boot/src/main/java/org/springframework/boot/context/initializer/ContextIdApplicationContextInitializer.java @@ -56,8 +56,8 @@ public class ContextIdApplicationContextInitializer implements private int order = Integer.MAX_VALUE - 10; public ContextIdApplicationContextInitializer() { - this( - "${spring.application.name:${vcap.application.name:${spring.config.name:application}}}"); + this("${spring.application.name:${vcap.application.name:" + + "${spring.config.name:application}}}"); } /** diff --git a/spring-boot/src/test/java/org/springframework/boot/test/SpringApplicationContextLoader.java b/spring-boot/src/test/java/org/springframework/boot/test/SpringApplicationContextLoader.java index 78e6a142054..8377d4196a9 100644 --- a/spring-boot/src/test/java/org/springframework/boot/test/SpringApplicationContextLoader.java +++ b/spring-boot/src/test/java/org/springframework/boot/test/SpringApplicationContextLoader.java @@ -50,7 +50,6 @@ import org.springframework.web.context.support.GenericWebApplicationContext; * create the application context. * * @author Dave Syer - * */ public class SpringApplicationContextLoader extends AbstractContextLoader {