Skip to content

Commit

Permalink
Implement excluded dependencies loading in parser and other minor fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
adam-wyluda committed Sep 21, 2013
1 parent fbea082 commit c08c29a
Show file tree
Hide file tree
Showing 5 changed files with 95 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
*/
package org.jboss.forge.addon.gradle.projects.model;

import java.util.List;

/**
* Project dependency defined in <i>project.dependencies</i>.
*
Expand Down Expand Up @@ -49,6 +51,11 @@ public interface GradleDependency
* Returns dependency packaging.
*/
String getPackaging();

/**
* Returns excluded dependencies.
*/
List<GradleDependency> getExcludedDependencies();

/**
* Returns Gradle string in format: <br/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,13 @@ public class GradleDependencyBuilder implements GradleDependency
{
static final String DEFAULT_PACKAGING = "jar";

private String configurationName = "";
private String group = "";
private String name = "";
private String version = "";
private String classifier = "";
private String configurationName = "";
private String packaging = DEFAULT_PACKAGING;
private List<GradleDependency> excludedDependencies = new ArrayList<GradleDependency>();

private GradleDependencyBuilder()
{
Expand All @@ -45,12 +46,13 @@ public static GradleDependencyBuilder create(GradleDependency dependency)
{
GradleDependencyBuilder builder = new GradleDependencyBuilder();

builder.name = dependency.getName();
builder.configurationName = dependency.getConfigurationName();
builder.group = dependency.getGroup();
builder.name = dependency.getName();
builder.version = dependency.getVersion();
builder.classifier = dependency.getClassifier();
builder.configurationName = dependency.getConfigurationName();
builder.packaging = dependency.getPackaging();
builder.excludedDependencies = dependency.getExcludedDependencies();

return builder;
}
Expand Down Expand Up @@ -188,6 +190,18 @@ public GradleDependencyBuilder setConfiguration(GradleDependencyConfiguration co
return this;
}

@Override
public List<GradleDependency> getExcludedDependencies()
{
return excludedDependencies;
}

public GradleDependencyBuilder setExcludedDependencies(List<GradleDependency> excludedDependencies)
{
this.excludedDependencies = excludedDependencies;
return null;
}

@Override
public String toGradleString()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,9 @@ private Dependency gradleDepToForgeDep(GradleDependency gradleDep)
.setScopeType(gradleDep.getConfiguration().toMavenScope())
.setGroupId(gradleDep.getGroup())
.setArtifactId(gradleDep.getName())
.setVersion(gradleDep.getVersion());
.setVersion(gradleDep.getVersion())
.setClassifier(gradleDep.getClassifier())
.setPackaging(gradleDep.getPackaging());
return forgeDep;
}

Expand All @@ -363,6 +365,7 @@ private GradleDependency forgeDepToGradleDep(Dependency forgeDep)
.setGroup(forgeDep.getCoordinate().getGroupId())
.setName(forgeDep.getCoordinate().getArtifactId())
.setVersion(forgeDep.getCoordinate().getVersion())
.setClassifier(forgeDep.getCoordinate().getClassifier())
.setPackaging(forgeDep.getCoordinate().getPackaging());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ public static String removeManagedDependency(String source, String group, String
return SourceUtil.removeSourceFragmentWithLine(source, invocation);
}
}

// Search in invocations with closure
for (InvocationWithClosure invocation : deps.getInvocationsWithClosure())
{
Expand Down Expand Up @@ -587,11 +587,46 @@ private static GradleDependency dependencyFromInvocation(InvocationWithMap invoc

private static GradleDependency dependencyFromInvocation(InvocationWithClosure invocation)
{
GradleDependency gradleDep = null;
if (!Strings.isNullOrEmpty(invocation.getStringParameter()))
{
return dependencyFromString(invocation.getMethodName(), invocation.getStringParameter());
gradleDep = dependencyFromString(invocation.getMethodName(), invocation.getStringParameter());
}
else
{
gradleDep = dependencyFromMap(invocation.getMethodName(), invocation.getMapParameter());
}

gradleDep = loadDependencyConfiguration(gradleDep, invocation);

return gradleDep;
}

private static GradleDependency loadDependencyConfiguration(GradleDependency dep, InvocationWithClosure invocation)
{
GradleDependencyBuilder builder = GradleDependencyBuilder.create(dep);

// Search for excludes
List<GradleDependency> excludes = Lists.newArrayList();
for (InvocationWithMap mapInvocation : invocation.getInvocationsWithMap())
{
if (mapInvocation.getMethodName().equals("exclude"))
{
String group = mapInvocation.getParameters().get("group");
String module = mapInvocation.getParameters().get("module");

// If group is not set then by default it uses dep group
if (Strings.isNullOrEmpty(group))
{
group = dep.getGroup();
}

excludes.add(GradleDependencyBuilder.create().setGroup(group).setName(module));
}
}
return dependencyFromMap(invocation.getMethodName(), invocation.getMapParameter());
builder.setExcludedDependencies(excludes);

return builder;
}

private static GradleDependency dependencyFromString(String configurationName, String gradleString)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,35 @@ public void testGetDependenciesWithClassifierAndPackaging()
.setConfigurationName("runtime").setGroup("d").setName("e").setVersion("f")
.setClassifier("xx").setPackaging("ear"));
}

@Test
public void testGetDependenciesWithExcludes()
{
String source = "" +
"dependencies {\n" +
" compile(group: 'x', name: 'y', version: 'v') {\n" +
" transitive = true\n" +
" force = false\n" +
" exclude module: 'qwerty'\n" +
" exclude group: 'b', module: 'c'\n" +
" }\n" +
"}\n";

List<GradleDependency> deps = GradleSourceUtil.getDependencies(source);

assertEquals(1, deps.size());
assertContainsDependency(deps, GradleDependencyBuilder.create()
.setConfigurationName("compile").setGroup("x").setName("y").setVersion("v"));

GradleDependency dep = deps.get(0);
List<GradleDependency> excludes = dep.getExcludedDependencies();

assertEquals(2, excludes.size());
assertContainsDirectDependency(excludes, GradleDependencyBuilder.create()
.setGroup("x").setName("qwerty"));
assertContainsDirectDependency(excludes, GradleDependencyBuilder.create()
.setGroup("b").setName("c"));
}

@Test
public void testInsertDirectDependency()
Expand Down

0 comments on commit c08c29a

Please sign in to comment.