From 10697402648696827fe0782b031456e38657a9bb Mon Sep 17 00:00:00 2001
From: Matei Zaharia <matei@eecs.berkeley.edu>
Date: Mon, 29 Aug 2011 23:27:10 -0700
Subject: [PATCH] Added a jarOfObject method to get the JAR of the class that
 an object belongs to, which seems like a more common case.

---
 core/src/main/scala/spark/SparkContext.scala | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/core/src/main/scala/spark/SparkContext.scala b/core/src/main/scala/spark/SparkContext.scala
index 598432c94a..f044da1e21 100644
--- a/core/src/main/scala/spark/SparkContext.scala
+++ b/core/src/main/scala/spark/SparkContext.scala
@@ -356,21 +356,23 @@ object SparkContext {
 
   // Find the JAR from which a given class was loaded, to make it easy for users to pass
   // their JARs to SparkContext
-  def jarOfClass[T: ClassManifest]: Option[String] = {
-    val cls = classManifest[T].erasure
+  def jarOfClass(cls: Class[_]): Seq[String] = {
     val uri = cls.getResource("/" + cls.getName.replace('.', '/') + ".class")
     if (uri != null) {
       val uriStr = uri.toString
       if (uriStr.startsWith("jar:file:")) {
         // URI will be of the form "jar:file:/path/foo.jar!/package/cls.class", so pull out the /path/foo.jar
-        Some(uriStr.substring("jar:file:".length, uriStr.indexOf('!')))
+        List(uriStr.substring("jar:file:".length, uriStr.indexOf('!')))
       } else {
-        None
+        Nil
       }
     } else {
-      None
+      Nil
     }
   }
+ 
+  // Find the JAR that contains the class of a particular object
+  def jarOfObject(obj: AnyRef): Seq[String] = jarOfClass(obj.getClass)
 }
 
 
-- 
GitLab