Skip to content

Commit 93b5065

Browse files
committed
Make sure generating Java files from Kotlin and Java APs works
1 parent 66feb61 commit 93b5065

File tree

6 files changed

+29
-16
lines changed

6 files changed

+29
-16
lines changed

src/main/kotlin/StreamUtils.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
package com.tschuchort.compiletest
2-
31
import java.io.IOException
42
import java.io.OutputStream
53

src/test/java/JavaTestProcessor.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import com.squareup.javapoet.JavaFile;
12
import com.squareup.kotlinpoet.FileSpec;
23
import com.squareup.kotlinpoet.FunSpec;
34
import com.squareup.kotlinpoet.TypeSpec;
@@ -49,7 +50,7 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
4950
if(!annotations.isEmpty()) {
5051
TypeSpec.Builder typeSpecBuilder = TypeSpec.classBuilder("JavaGeneratedKotlinClass");
5152

52-
for(Element annotatedElement : roundEnv.getElementsAnnotatedWith(Marker.class)) {
53+
for (Element annotatedElement : roundEnv.getElementsAnnotatedWith(Marker.class)) {
5354
typeSpecBuilder.addFunction(FunSpec.builder(annotatedElement.getSimpleName().toString()
5455
).build()
5556
).build();
@@ -60,6 +61,12 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
6061
.build();
6162

6263
writeKotlinFile(fileSpec, fileSpec.getName(), fileSpec.getPackageName());
64+
65+
try {
66+
JavaFile.builder("", com.squareup.javapoet.TypeSpec.classBuilder("JavaGeneratedJavaClass").build())
67+
.build().writeTo(processingEnv.getFiler());
68+
} catch (Exception e) {
69+
}
6370
}
6471

6572
return false;
@@ -78,7 +85,6 @@ private void writeKotlinFile(FileSpec fileSpec, String fileName, String packageN
7885
(new FileOutputStream(new File(outputFolder, fileName))).write(fileSpec.toString().getBytes(Charsets.UTF_8));
7986
}
8087
catch(Exception e) {
81-
8288
}
8389
}
8490
}

src/test/kotlin/KotlinCompilation.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
* limitations under the License.
1515
*/
1616

17-
import com.tschuchort.compiletest.NullStream
18-
import com.tschuchort.compiletest.TeeOutputStream
1917
import io.github.classgraph.ClassGraph
2018
import okio.Buffer
2119
import okio.buffer
@@ -321,7 +319,7 @@ open class KotlinCompilation(
321319
val javac = ToolProvider.getSystemJavaCompiler()
322320
val javaFileManager = javac.getStandardFileManager(null, null, null)
323321

324-
val javaSources = sourcesDir.listFilesRecursively()
322+
val javaSources = (sourcesDir.listFilesRecursively() + kaptSourceDir.listFilesRecursively())
325323
.filterNot<File>(File::isKotlinFile)
326324
.map { FileJavaFileObject(it) }
327325
.filter { it.kind == JavaFileObject.Kind.SOURCE }

src/test/kotlin/KotlinTestProcessor.kt

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import com.squareup.javapoet.JavaFile
2+
import com.squareup.javapoet.TypeSpec as JavaTypeSpec
13
import com.squareup.kotlinpoet.FileSpec
24
import com.squareup.kotlinpoet.FunSpec
35
import com.squareup.kotlinpoet.TypeSpec
@@ -38,18 +40,25 @@ class KotlinTestProcessor : AbstractProcessor() {
3840
override fun process(annotations: Set<TypeElement>, roundEnv: RoundEnvironment): Boolean {
3941
processingEnv.messager.printMessage(Diagnostic.Kind.WARNING, "kotlin processor was called")
4042

41-
if(annotations.isNotEmpty())
43+
if(annotations.isNotEmpty()) {
4244
FileSpec.builder("", "KotlinGeneratedKotlinClass.kt")
43-
.addType(TypeSpec.classBuilder("KotlinGeneratedKotlinClass").apply {
44-
for(annotatedElem in roundEnv.getElementsAnnotatedWith(Marker::class.java)) {
45-
addFunction(FunSpec.builder(annotatedElem.simpleName.toString())
46-
.build()
45+
.addType(
46+
TypeSpec.classBuilder("KotlinGeneratedKotlinClass").apply {
47+
for (annotatedElem in roundEnv.getElementsAnnotatedWith(Marker::class.java)) {
48+
addFunction(
49+
FunSpec.builder(annotatedElem.simpleName.toString())
50+
.build()
4751
)
4852
}
4953
}.build()
5054
).build()
5155
.let { writeKotlinFile(it) }
5256

57+
JavaFile.builder("", JavaTypeSpec.classBuilder("KotlinGeneratedJavaClass").build())
58+
.build().writeTo(processingEnv.filer)
59+
60+
}
61+
5362
return false
5463
}
5564

src/test/kotlin/SmokeTests.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,12 @@ class SmokeTests {
3232
3333
fun main(freeArgs: Array<String>) {
3434
File("")
35-
println("hello")
3635
KotlinGeneratedKotlinClass().foo()
3736
KotlinGeneratedKotlinClass().bar()
3837
JavaGeneratedKotlinClass().foo()
3938
JavaGeneratedKotlinClass().bar()
39+
KotlinGeneratedJavaClass()
40+
JavaGeneratedJavaClass()
4041
}
4142
""".trimIndent()
4243
)
@@ -49,10 +50,12 @@ class SmokeTests {
4950
5051
public class JSource {
5152
public JSource() {
53+
(new KotlinGeneratedKotlinClass()).bar();
5254
(new KotlinGeneratedKotlinClass()).foo();
53-
(new KotlinGeneratedKotlinClass()).bar();
5455
(new JavaGeneratedKotlinClass()).foo();
5556
(new JavaGeneratedKotlinClass()).bar();
57+
KotlinGeneratedJavaClass c = new KotlinGeneratedJavaClass();
58+
JavaGeneratedJavaClass c2 = new JavaGeneratedJavaClass();
5659
}
5760
5861
@Marker public void bar() {
@@ -65,7 +68,7 @@ class SmokeTests {
6568
val systemOutBuffer = Buffer()
6669

6770
val result = KotlinCompilation(
68-
workingDir = File("C:\\compile-testing"),
71+
workingDir = temporaryFolder.root,
6972
sources = listOf(kSource, jSource),
7073
services = listOf(
7174
KotlinCompilation.Service(Processor::class, KotlinTestProcessor::class),

src/test/kotlin/StreamUtilTests.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import com.nhaarman.mockitokotlin2.mock
22
import com.nhaarman.mockitokotlin2.verify
3-
import com.tschuchort.compiletest.TeeOutputStream
43
import okio.Buffer
54
import org.assertj.core.api.Assertions
65
import org.junit.Test

0 commit comments

Comments
 (0)