15
15
*/
16
16
package kotlinx.benchmark.gradle
17
17
18
+ import org.gradle.api.file.DirectoryProperty
19
+ import org.gradle.api.file.ConfigurableFileCollection
20
+ import org.gradle.workers.WorkAction
21
+ import org.gradle.workers.WorkParameters
18
22
import org.openjdk.jmh.annotations.*
19
23
import org.openjdk.jmh.generators.core.*
20
24
import org.openjdk.jmh.generators.reflection.*
21
25
import org.openjdk.jmh.util.*
22
26
import java.io.*
23
27
import java.net.*
24
28
import java.util.*
25
- import javax.inject.*
26
29
27
- class JmhBytecodeGeneratorWorker
28
- @Inject constructor (
29
- private val inputClasses: Set <File >,
30
- private val inputClasspath: Set <File >,
31
- private val outputSourceDirectory: File ,
32
- private val outputResourceDirectory: File
33
- ) : Runnable {
30
+ abstract class JmhBytecodeGeneratorWorker : WorkAction <JmhBytecodeGeneratorWorkParameters > {
34
31
35
32
companion object {
36
33
private const val classSuffix = " .class"
37
34
}
38
35
39
- override fun run () {
36
+ private val outputSourceDirectory: File get() = parameters.outputSourceDirectory.get().asFile
37
+ private val outputResourceDirectory: File get() = parameters.outputResourceDirectory.get().asFile
38
+
39
+ override fun execute () {
40
40
cleanup(outputSourceDirectory)
41
41
cleanup(outputResourceDirectory)
42
42
43
- val urls = (inputClasses + inputClasspath).map { it.toURI().toURL() }.toTypedArray()
43
+ val urls = (parameters. inputClasses + parameters. inputClasspath).map { it.toURI().toURL() }.toTypedArray()
44
44
45
45
// Include compiled bytecode on classpath, in case we need to
46
46
// resolve the cross-class dependencies
@@ -75,7 +75,7 @@ class JmhBytecodeGeneratorWorker
75
75
val destination = FileSystemDestination (outputResourceDirectory, outputSourceDirectory)
76
76
77
77
val allFiles = HashMap <File , Collection <File >>(urls.size)
78
- for (directory in inputClasses) {
78
+ for (directory in parameters. inputClasses) {
79
79
val classes = FileUtils .getClasses(directory)
80
80
allFiles[directory] = classes
81
81
}
@@ -110,3 +110,11 @@ class JmhBytecodeGeneratorWorker
110
110
}
111
111
}
112
112
}
113
+
114
+
115
+ interface JmhBytecodeGeneratorWorkParameters : WorkParameters {
116
+ val inputClasses: ConfigurableFileCollection
117
+ val inputClasspath: ConfigurableFileCollection
118
+ val outputSourceDirectory: DirectoryProperty
119
+ val outputResourceDirectory: DirectoryProperty
120
+ }
0 commit comments