Skip to content

Commit

Permalink
Polish
Browse files Browse the repository at this point in the history
  • Loading branch information
philwebb committed Oct 8, 2015
1 parent aae38db commit c525689
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 30 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2014-2015 the original author or authors.
* Copyright 2012-2015 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.
Expand Down Expand Up @@ -39,15 +39,15 @@

/**
* A base class that lets plugin authors easily add additional BOMs to all apps. All the
* dependencies in the bom (and it's transitives) will be added to the dependency
* dependencies in the BOM (and it's transitives) will be added to the dependency
* management lookup, so an app can use just the artifact id (e.g. "spring-jdbc") in a
* <code>@Grab</code>. To install, implement the missing methods and list the class in
* <code>META-INF/services/org.springframework.boot.cli.compiler.SpringBootAstTransformation</code>
* {@code @Grab}. To install, implement the missing methods and list the class in
* {@code META-INF/services/org.springframework.boot.cli.compiler.SpringBootAstTransformation}
* . The {@link #getOrder()} value needs to be before
* {@link DependencyManagementBomTransformation#ORDER}.
*
* @author Dave Syer
*
* @since 1.3.0
*/
@GroovyASTTransformation(phase = CompilePhase.CONVERSION)
public abstract class GenericBomAstTransformation
Expand All @@ -67,11 +67,10 @@ public void visit(ASTNode[] nodes, SourceUnit source) {
/**
* The bom to be added to dependency management in compact form:
* <code>"&lt;groupId&gt;:&lt;artifactId&gt;:&lt;version&gt;"</code> (like in a
* <code>@Grab</code>).
*
* @return the maven co-ordinates of the bom to add
* {@code @Grab}).
* @return the maven co-ordinates of the BOM to add
*/
abstract protected String getBomModule();
protected abstract String getBomModule();

private void visitModule(ModuleNode node, String module) {
addDependencyManagementBom(node, module);
Expand All @@ -89,30 +88,24 @@ private void addDependencyManagementBom(ModuleNode node, String module) {
}

private AnnotationNode getAnnotation(AnnotatedNode annotated) {
AnnotationNode annotation;
List<AnnotationNode> annotations = annotated.getAnnotations(BOM);
if (annotations.isEmpty()) {
annotation = new AnnotationNode(BOM);
annotated.addAnnotation(annotation);
}
else {
annotation = annotations.get(0);
if (!annotations.isEmpty()) {
return annotations.get(0);
}
AnnotationNode annotation = new AnnotationNode(BOM);
annotated.addAnnotation(annotation);
return annotation;
}

private AnnotatedNode getAnnotatedNode(ModuleNode node) {
PackageNode pkg = node.getPackage();
if (pkg != null) {
if (!pkg.getAnnotations(BOM).isEmpty()) {
return pkg;
}
PackageNode packageNode = node.getPackage();
if (packageNode != null && !packageNode.getAnnotations(BOM).isEmpty()) {
return packageNode;
}
if (!node.getClasses().isEmpty()) {
ClassNode cls = node.getClasses().get(0);
return cls;
return node.getClasses().get(0);
}
return pkg;
return packageNode;
}

private List<ConstantExpression> getConstantExpressions(Expression valueExpression) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
* Tests for {@link ResolveDependencyCoordinatesTransformation}
*
* @author Andy Wilkinson
* @author Dave Syer
*/
public final class GenericBomAstTransformationTests {

Expand All @@ -59,6 +60,7 @@ public int getOrder() {
protected String getBomModule() {
return "test:child:1.0.0";
}

};

@Test
Expand Down Expand Up @@ -106,16 +108,15 @@ else if (expression == null) {
}

private AnnotationNode findAnnotation() {
PackageNode pkg = this.moduleNode.getPackage();
PackageNode packageNode = this.moduleNode.getPackage();
ClassNode bom = ClassHelper.make(DependencyManagementBom.class);
if (pkg != null) {
if (!pkg.getAnnotations(bom).isEmpty()) {
return pkg.getAnnotations(bom).get(0);
if (packageNode != null) {
if (!packageNode.getAnnotations(bom).isEmpty()) {
return packageNode.getAnnotations(bom).get(0);
}
}
if (!this.moduleNode.getClasses().isEmpty()) {
ClassNode cls = this.moduleNode.getClasses().get(0);
return cls.getAnnotations(bom).get(0);
return this.moduleNode.getClasses().get(0).getAnnotations(bom).get(0);
}
throw new IllegalStateException("No package or class node found");
}
Expand Down

0 comments on commit c525689

Please sign in to comment.