@@ -23,7 +23,6 @@ import java.util.jar.JarFile
2323import scala .collection .mutable
2424import scala .collection .JavaConversions ._
2525import scala .reflect .runtime .universe .runtimeMirror
26- import scala .util .Try
2726
2827/**
2928 * A tool for generating classes to be excluded during binary checking with MIMA. It is expected
@@ -113,31 +112,10 @@ object GenerateMIMAIgnore {
113112 val resources = classLoader.getResources(path)
114113
115114 val jars = resources.filter(x => x.getProtocol == " jar" )
116- .map(_.getFile.split(" :" )(1 ).split(" !" )(0 ))
115+ .map(_.getFile.split(" :" )(1 ).split(" !" )(0 )).toSeq
117116 val classesFromJars = jars.map(getClassesFromJar(_, path)).flatten
118117
119- val dirs = resources.filter(x => x.getProtocol == " file" )
120- .map(x => new File (x.getFile.split(" :" ).last))
121- val classFromDirs = dirs.map(getClassesFromDir(_, packageName)).flatten
122-
123- (classFromDirs ++ classesFromJars).map(_.getName).filterNot(shouldExclude).toSet
124- }
125-
126- private def getClassesFromDir (directory : File , packageName : String ): Seq [Class [_]] = {
127- val classes = mutable.ArrayBuffer [Class [_]]()
128- if (! directory.exists()) {
129- return classes
130- }
131- val files = directory.listFiles()
132- for (file <- files) {
133- if (file.isDirectory) {
134- classes ++= getClassesFromDir(file, packageName + " ." + file.getName)
135- } else if (file.getName.endsWith(" .class" )) {
136- val className = file.getName.stripSuffix(" .class" )
137- classes += Class .forName(packageName + '.' + className)
138- }
139- }
140- classes
118+ classesFromJars.map(_.getName).filterNot(shouldExclude).toSet
141119 }
142120
143121 /**
@@ -146,10 +124,8 @@ object GenerateMIMAIgnore {
146124 private def getClassesFromJar (jarPath : String , packageName : String ) = {
147125 val jar = new JarFile (new File (jarPath))
148126 val enums = jar.entries().map(_.getName).filter(_.startsWith(packageName))
149- val classes = mutable.HashSet [Class [_]]()
150- for (entry <- enums if entry.endsWith(" .class" )) {
151- classes += Class .forName(entry.trim.replaceAll(" .class" , " " ).replace('/' , '.' ))
152- }
127+ val classes = for (entry <- enums if entry.endsWith(" .class" ))
128+ yield Class .forName(entry.replace('/' , '.' ).stripSuffix(" .class" ))
153129 classes
154130 }
155131}
0 commit comments