From 017b3a11bb958d1271ef2b5aed3e8e0cafc0495a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20Wy=C5=82uda?= Date: Wed, 18 Sep 2013 23:46:08 +0200 Subject: [PATCH] Implement loading effective dependency classifier and packaging --- .../projects/model/GradleModelLoadUtil.java | 34 +++++++++++++++++-- .../model/GradleModelLoadUtilTest.java | 24 +++++++++---- 2 files changed, 50 insertions(+), 8 deletions(-) diff --git a/impl/src/main/java/org/jboss/forge/addon/gradle/projects/model/GradleModelLoadUtil.java b/impl/src/main/java/org/jboss/forge/addon/gradle/projects/model/GradleModelLoadUtil.java index a6080f6..f6920e3 100644 --- a/impl/src/main/java/org/jboss/forge/addon/gradle/projects/model/GradleModelLoadUtil.java +++ b/impl/src/main/java/org/jboss/forge/addon/gradle/projects/model/GradleModelLoadUtil.java @@ -26,7 +26,7 @@ public class GradleModelLoadUtil private GradleModelLoadUtil() { } - + /** * Loads only direct model from given script. */ @@ -257,11 +257,41 @@ private static GradleDependency depFromNode(Node depNode) String version = depNode.getSingle("version").getText().trim(); String config = depNode.getSingle("configuration").getText().trim(); - return GradleDependencyBuilder.create() + GradleDependencyBuilder depBuilder = GradleDependencyBuilder.create() .setGroup(group) .setName(name) .setVersion(version) .setConfigurationName(config); + + depBuilder = loadClassifierAndPackagingFromNode(depBuilder, depNode); + + return depBuilder; + } + + private static GradleDependencyBuilder loadClassifierAndPackagingFromNode( + GradleDependencyBuilder depBuilder, + Node depNode) + { + Node artifactsNode = depNode.getSingle("artifacts"); + Node artifactNode = artifactsNode != null ? artifactsNode.getSingle("artifact") : null; + + if (artifactNode != null) + { + String classifier = artifactNode.getSingle("classifier").getText().trim(); + String type = artifactNode.getSingle("type").getText().trim(); + + if (!Strings.isNullOrEmpty(classifier)) + { + depBuilder = depBuilder.setClassifier(classifier); + } + + if (!Strings.isNullOrEmpty(type)) + { + depBuilder = depBuilder.setPackaging(type); + } + } + + return depBuilder; } private static List pluginsFromNode(Node projectNode) diff --git a/impl/src/test/java/org/jboss/forge/addon/gradle/projects/model/GradleModelLoadUtilTest.java b/impl/src/test/java/org/jboss/forge/addon/gradle/projects/model/GradleModelLoadUtilTest.java index f8f746e..2df567a 100644 --- a/impl/src/test/java/org/jboss/forge/addon/gradle/projects/model/GradleModelLoadUtilTest.java +++ b/impl/src/test/java/org/jboss/forge/addon/gradle/projects/model/GradleModelLoadUtilTest.java @@ -124,14 +124,26 @@ else if (dependsOn.getName().equals("test")) public void testEffectiveDependencies() { assertTrue(model.hasEffectiveDependency(GradleDependencyBuilder.create() - .setGroup("org.gradle").setName("gradle-tooling-api").setVersion("1.6") - .setConfiguration(GradleDependencyConfiguration.COMPILE))); + .setGroup("org.gradle") + .setName("gradle-tooling-api") + .setVersion("1.6") + .setConfiguration(GradleDependencyConfiguration.COMPILE) + .setClassifier("cl") + .setPackaging("ear"))); + assertTrue(model.hasEffectiveDependency(GradleDependencyBuilder.create() - .setGroup("junit").setName("junit").setVersion("4.11") - .setConfiguration(GradleDependencyConfiguration.TEST_COMPILE))); + .setGroup("junit") + .setName("junit") + .setVersion("4.11") + .setConfiguration(GradleDependencyConfiguration.TEST_COMPILE) + .setPackaging("pom"))); + assertTrue(model.hasEffectiveDependency(GradleDependencyBuilder.create() - .setGroup("x").setName("y").setVersion("z") - .setConfiguration(GradleDependencyConfiguration.TEST_RUNTIME))); + .setGroup("x") + .setName("y") + .setVersion("z") + .setConfiguration(GradleDependencyConfiguration.TEST_RUNTIME) + .setClassifier("clas"))); boolean gradleToolingSet = false, junitSet = false, xSet = false; for (GradleDependency dep : model.getEffectiveDependencies())