[gradle-debian-helper] 02/08: org.debian.gradle.tasks.MavenPom: Use Reflections to invoke the methods of org.apache.maven.model.Dependency

Kai-Chung Yan seamlik-guest at moszumanska.debian.org
Sat Oct 22 11:42:42 UTC 2016


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 (殷啟聰) <seamlikok at gmail.com>
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



More information about the pkg-java-commits mailing list