Skip to content

Commit

Permalink
removed gizmo and classfile-api
Browse files Browse the repository at this point in the history
more bc work
  • Loading branch information
evanchooly committed Jul 24, 2024
1 parent 09594cd commit d4c76bc
Show file tree
Hide file tree
Showing 12 changed files with 57 additions and 459 deletions.
12 changes: 6 additions & 6 deletions critter/core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,14 @@
<artifactId>morphia-core</artifactId>
</dependency>
<dependency>
<groupId>io.github.dmlloyd</groupId>
<artifactId>jdk-classfile-preview</artifactId>
<version>23.cr2</version>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-tree</artifactId>
<version>9.7</version>
</dependency>
<dependency>
<groupId>io.quarkus.gizmo</groupId>
<artifactId>gizmo</artifactId>
<version>1.8.0</version>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-util</artifactId>
<version>9.7</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package dev.morphia.critter.parser.generators

import dev.morphia.critter.parser.java.CritterParser
import dev.morphia.critter.titleCase
import org.objectweb.asm.ClassReader
import org.objectweb.asm.ClassVisitor
Expand All @@ -14,27 +15,50 @@ import org.objectweb.asm.Opcodes.IRETURN
import org.objectweb.asm.Opcodes.PUTFIELD
import org.objectweb.asm.Opcodes.RETURN
import org.objectweb.asm.Type
import org.objectweb.asm.tree.ClassNode

class AddFieldAccessorMethods(val entity: Class<*>) {
val entityType = Type.getType(entity)
class AddFieldAccessorMethods(entity: Class<*>) : BaseGenerator(entity) {
var fields: Map<String, Type>

fun update(fields: Map<String, Class<*>>): ByteArray {
init {
val cr = ClassReader(entity.name)
val writer = ClassWriter(cr, 0)
classWriter = ClassWriter(cr, 0)
cr.accept(classWriter, 0)

cr.accept(writer, 0)
fields = discoverFields()
}

private fun discoverFields(): Map<String, Type> {
val reader = ClassReader(entityType.className)
val classNode = ClassNode()
reader.accept(classNode, 0)

return classNode.fields
.filter { field ->
val annotations = field.visibleAnnotations ?: listOf()
annotations.isEmpty() ||
annotations
.map { a -> a.desc }
.any { desc ->
desc in CritterParser.propertyAnnotations() &&
desc !in CritterParser.transientAnnotations()
}
}
.map { field -> field.name to Type.getType(field.desc) }
.toMap()
}

override fun emit(): ByteArray {
fields.forEach { (name, type) ->
val fieldType = Type.getType(type)
read(writer, name, fieldType)
write(writer, name, fieldType)
reader(classWriter, name, type)
writer(classWriter, name, type)
}

writer.visitEnd()
return writer.toByteArray()
classWriter.visitEnd()
return classWriter.toByteArray()
}

private fun write(classNode: ClassVisitor, field: String, fieldType: Type) {
private fun writer(classNode: ClassVisitor, field: String, fieldType: Type) {
val mv =
classNode.visitMethod(
ACC_PUBLIC or ACC_SYNTHETIC,
Expand Down Expand Up @@ -62,7 +86,7 @@ class AddFieldAccessorMethods(val entity: Class<*>) {
mv.visitEnd()
}

private fun read(classNode: ClassVisitor, field: String, fieldType: Type) {
private fun reader(classNode: ClassVisitor, field: String, fieldType: Type) {
val mv =
classNode.visitMethod(
ACC_PUBLIC or ACC_SYNTHETIC,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import org.objectweb.asm.Opcodes.*
import org.objectweb.asm.Type

abstract class BaseGenerator(entity: Class<*>) {
val classWriter = ClassWriter(0)
var classWriter = ClassWriter(0)
val entityType: Type = Type.getType(entity)

lateinit var generatedType: Type
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package dev.morphia.critter.parser.java

import dev.morphia.critter.parser.java.CritterParser.asmify
import io.quarkus.gizmo.ClassOutput
import java.io.File
import java.io.FileOutputStream
import java.io.FileWriter
Expand All @@ -10,7 +9,7 @@ import org.jboss.forge.roaster.Roaster
import org.jboss.forge.roaster.model.source.JavaClassSource
import org.objectweb.asm.Type

class CritterClassLoader(parent: ClassLoader?) : ChildFirst(parent, mapOf()), ClassOutput {
class CritterClassLoader(parent: ClassLoader?) : ChildFirst(parent, mapOf()) {
companion object {
var debug = false
var output = "target/critter"
Expand Down Expand Up @@ -51,8 +50,4 @@ class CritterClassLoader(parent: ClassLoader?) : ChildFirst(parent, mapOf()), Cl

return findClass
}

override fun write(name: String, data: ByteArray) {
register(name, data)
}
}
Loading

0 comments on commit d4c76bc

Please sign in to comment.