This is an automated email from the git hooks/post-receive script. seamlik-guest pushed a commit to branch master in repository gradle-debian-helper.
commit 00f5f3042e04a39d2f0bf4a7f8d35df149d27815 Author: Kai-Chung Yan (殷啟聰) <[email protected]> Date: Fri Oct 21 14:10:28 2016 +0800 org.debian.gradle.tasks.MavenPom: Use Reflections to invoke the methods of org.apache.maven.model.Dependency --- .../java/org/debian/gradle/tasks/MavenPom.java | 64 ++++++++++++++++++---- 1 file changed, 54 insertions(+), 10 deletions(-) diff --git a/gradle-helper-plugin/src/main/java/org/debian/gradle/tasks/MavenPom.java b/gradle-helper-plugin/src/main/java/org/debian/gradle/tasks/MavenPom.java index 4295a76..7bc2710 100644 --- a/gradle-helper-plugin/src/main/java/org/debian/gradle/tasks/MavenPom.java +++ b/gradle-helper-plugin/src/main/java/org/debian/gradle/tasks/MavenPom.java @@ -16,7 +16,6 @@ package org.debian.gradle.tasks; -import org.apache.maven.model.Dependency; import org.codehaus.groovy.runtime.MethodClosure; import org.codehaus.groovy.runtime.NullObject; import org.gradle.api.DefaultTask; @@ -31,22 +30,67 @@ import java.util.Comparator; public class MavenPom extends DefaultTask { + /* Since the Groovy in Gradle scripts are dynamically typed and due to + Gradle's own class loading mechanism, we couldn't cast the type of + org.apache.maven.model.Dependency. So we have to use Reflections. */ + private String getMavenDependencyScope(Object dependency) { + String result = null; + try { + result = ((String)dependency.getClass() + .getMethod("getScope") + .invoke(dependency)); + } finally { + return result; + } + } + + private String getMavenDependencyGroupId(Object dependency) { + String result = null; + try { + result = ((String)dependency.getClass() + .getMethod("getGroupId") + .invoke(dependency)); + } finally { + return result; + } + } + + private String getMavenDependencyArtifactId(Object dependency) { + String result = null; + try { + result = ((String)dependency.getClass() + .getMethod("getArtifactId") + .invoke(dependency)); + } finally { + return result; + } + } + + private String getMavenDependencyVersion(Object dependency) { + String result = null; + try { + result = ((String)dependency.getClass() + .getMethod("getVersion") + .invoke(dependency)); + } finally { + return result; + } + } + private void sortPomDependencies(org.gradle.api.artifacts.maven.MavenPom pom) { Collections.sort( pom.getDependencies(), new Comparator<Object>() { @Override public int compare(Object o1, Object o2) { - Dependency d1 = (Dependency) o1; - Dependency d2 = (Dependency) o2; - if (d1.getScope().compareTo(d2.getScope()) != 0) { - return d1.getScope().compareTo(d2.getScope()); - } else if (d1.getGroupId().compareTo(d2.getGroupId()) != 0) { - return d1.getGroupId().compareTo(d2.getGroupId()); - } else if (d1.getArtifactId().compareTo(d2.getArtifactId()) != 0) { - return d1.getArtifactId().compareTo(d2.getArtifactId()); + if (getMavenDependencyScope(o1).compareTo(getMavenDependencyScope(o2)) != 0) { + return getMavenDependencyScope(o1).compareTo(getMavenDependencyScope(o2)); + } else if (getMavenDependencyGroupId(o1).compareTo(getMavenDependencyGroupId(o2)) != 0) { + return getMavenDependencyGroupId(o1).compareTo(getMavenDependencyGroupId(o2)); + } else if (getMavenDependencyArtifactId(o1).compareTo(getMavenDependencyArtifactId(o2)) != 0) { + return getMavenDependencyArtifactId(o1).compareTo(getMavenDependencyArtifactId(o2)); } else { - return d1.getVersion().compareTo(d2.getVersion()); + return getMavenDependencyVersion(o1).compareTo(getMavenDependencyVersion(o2)); } } -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/gradle-debian-helper.git _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

